1

xml ファイルからツリービューを作成しようとしています。

出力の画像: http://i.stack.imgur.com/3HSCu.png

ご覧のとおり、親は適切にロードされていますが、子 (要素) はロードされていません。すべての子ノードがすべての親ノードにロードされます。しかし、xmlはそうではありません。

これは XML コードです。

<?xml version="1.0" encoding="utf-8" ?> 
<toolbox>
<parent id="p1" caption="All Elements" class="parent">
  <element id="1" name="Button" />
  <element id="2" name="Label" />
  <element id="3" name="Inputfield" />
  <element id="4" name="Textarea" />
  <element id="5" name="Image" />
  <element id="6" name="Background" />
  <element id="7" name="TreeView" />
</parent>
<parent id="p2" caption="Some Elements 1" class="parent">
  <element id="1" name="Button" />
  <element id="2" name="Label" />
  <element id="3" name="Inputfield" />
</parent>
<parent id="p3" caption="Some Elements 2" class="parent">
  <element id="4" name="Textarea" />
  <element id="5" name="Image" />
  <element id="6" name="Background" />
  <element id="7" name="TreeView" />
</parent>
</toolbox>

これは C# コードです。

    public void loadElements(string XML_Elements, TreeView Elements_Tree){
        XmlDocument XMLDocument =  new XmlDocument();
        XMLDocument.Load(XML_Elements);

        Elements_Tree.Nodes.Clear();
        Elements_Tree.BeginUpdate();

        XmlNodeList XMLParent = XMLDocument.SelectNodes("toolbox/parent"); 
        foreach(XmlNode xmlparent in XMLParent){
            //add parents
            string Parent_Caption = xmlparent.Attributes["caption"].Value;
            TreeNode parents = Elements_Tree.Nodes.Add(Parent_Caption);

            //add childs
            XmlNodeList XMLChilds = XMLDocument.SelectNodes("toolbox/parent/element");
            foreach (XmlNode xmlchild in XMLChilds)
            {
                string Child_Name = xmlchild.Attributes["name"].Value;
                parents.Nodes.Add(Child_Name);
            }
        }            
    }
4

2 に答える 2

1

element現在のparent要素内でのみ sを検索する必要があります。それを試してください:

XmlNodeList XMLChilds = XMLDocument.SelectNodes("toolbox/parent[@caption='" + Parent_Caption  + "']/element");

または、さらに良いかもしれません:

XmlNodeList XMLChilds = xmlparent.SelectNodes("element");
于 2013-08-22T16:40:24.923 に答える