Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用相同的节点值遍历XML_C#_Xml_Loops_Recursion_Linq To Xml - Fatal编程技术网

C# 使用相同的节点值遍历XML

C# 使用相同的节点值遍历XML,c#,xml,loops,recursion,linq-to-xml,C#,Xml,Loops,Recursion,Linq To Xml,我很难在XML文件中循环并在例如TreeView中表示它。我的XML的结构如下所示: <Categories> <Category Name="Cat Level1"> <Categories> <Category Name="ChildCat Level 2"> <Categories> <Category Name="ChildCat Level3_1" />

我很难在XML文件中循环并在例如TreeView中表示它。我的XML的结构如下所示:

<Categories>
  <Category Name="Cat Level1">
    <Categories>
      <Category Name="ChildCat Level 2">
        <Categories>
          <Category Name="ChildCat Level3_1" />
          <Category Name="ChildCat Level3_2" />
        </Categories>
      </Category>
    </Categories>
  </Category>
</Categories>

如果使用
元素
方法而不是
子体
方法,它将只返回直接子级。这应该可以解决问题


元素
文档是。

如果使用
元素
方法而不是
子体
方法,它将只返回直接子体。这应该可以解决问题


元素
文档是。

您是否尝试过使用
元素
而不是
子体
?听起来它只返回直接的子对象。那么我应该在哪里使用元素而不是后代呢?到处都有,或者在每个零件上,或者…?找到了!:)把你的评论写在答案里,我会把它标记为正确答案!;)您是否尝试过使用
元素
而不是
子体
?听起来它只返回直接的子对象。那么我应该在哪里使用元素而不是后代呢?到处都有,或者在每个零件上,或者…?找到了!:)把你的评论写在答案里,我会把它标记为正确答案!;)
private void CreateTreeStructure(XDocument xDoc)
{
    foreach(var element in xDoc.Descendants("Category"))
    {
        var node = new TreeNode(element.Attribute("Name").Value);
        treeView1.Nodes.Add(node);
        ReadChildren(element.Descendants("Categories"), node);
    }
}

private void ReadChildren(IEnumerable<XElement> element, TreeNode node)
{
    foreach (var child in element.Descendants("Category"))
    {
        var childNode = new TreeNode(child.Attribute("Name").Value);
        node.Nodes.Add(childNode);
        ReadChildren(child.Descendants("Categories"), childNode);
    }
}
private void CreateTreeStructure(XDocument xDoc)
{
    foreach (var element in xDoc.Root.Elements("Category"))
    {
        var node = new TreeNode(element.Attribute("Name").Value);
        treeView1.Nodes.Add(node);
        if (element.HasElements) 
            ReadChildren(element.Element("Categories"), node);
    }
}

private void ReadChildren(XElement element, TreeNode node)
{
    foreach (var child in element.Elements("Category"))
    {
        var childNode = new TreeNode(child.Attribute("Name").Value);
        node.Nodes.Add(childNode);
        if(child.HasElements)
            ReadChildren(child.Element("Categories"), childNode);
    }
}