C#如何通过递归遍历子树?

时间:2015-07-14 11:13:10

标签: c# xml recursion linq-to-xml

我想,我必须首先设置我想探索子树的起点,然后建立一个递归调用。

示例:

<realRoot>
  <node>
    <desiredRoot>
      <rootChild/>
        <nestedChild/>
      <rootChild/>
    </desiredRoot>
  </node>
 </realRoot>

我的目标是只迭代:

<desiredRoot>
      <rootChild/>
        <nestedChild/>
      <rootChild/>
</desiredRoot>

C#中最好的解决方案是什么?

1 个答案:

答案 0 :(得分:0)

如果我理解正确:一个简单的例子显示元素的名称和类型:

            var xmlstr = @"<realRoot>
  <node>
    <desiredRoot>
      <rootChild/>
      <nestedChild/>
      <rootChild/>
    </desiredRoot>
  </node>
 </realRoot>";
            var xd = XDocument.Parse(xmlstr);
            var el = xd.Root.Element("node").Descendants();
            foreach (var x in el)
                Console.WriteLine("{0} [{1}]", x.Name, x.NodeType);

打印:

desiredRoot [Element]
rootChild [Element]
nestedChild [Element]
rootChild [Element]

链接:https://dotnetfiddle.net/BIE0zI