Recursive adding XML into TreeView

后端 未结 3 1745
天涯浪人
天涯浪人 2021-01-25 06:56

I\'m trying to import an XML file of nodes into the same node structure in a TreeView using C#. I have found a lot of example that use a single node structure, but have had a lo

3条回答
  •  一个人的身影
    2021-01-25 07:52

    I suggest recursion

    void AddNodes(XElement parentElement, TreeNode parent = null)
    {
        Queue queue = new Queue(parentElement.Elements());
        while (queue.Count > 0)
        {
            TreeNode child = parent;
            XElement element = queue.Dequeue();
            if (!element.HasElements)
            {
                string value = element.Value;
                element = (XElement)element.NextNode;
                if (null != element && !element.HasElements)
                    value = element.Value;
    
                if (null == parent)
                    treeView1.Nodes.Add(child = new TreeNode(value));
                else
                    parent.Nodes.Add(child = new TreeNode(value));
                child.Expand();
                element = queue.Dequeue();
            }
            AddNodes(element, child);
        }
    }
    
    AddNodes(XElement.Load("ProductDocument.xml"));
    

    enter image description here

    Note: dbc's answer is probably better if your XML structure is likely to change, but if you are given it as it currently stands, and it won't change - then this will slurp it right into the tree quickly, without a lot of overhead.

提交回复
热议问题