LINQ over XML:找到顶级父级

时间:2009-03-20 09:51:01

标签: linq-to-xml

我正在使用C#和LINQ来遍历我的XDocument。

假设我有这样的XML:

<Root>
  <Element ID="1">
    <Element ID="2">
      <Element ID="3" />
      ...
    </Element>
    <Element ID="50">
      ...
    </Element>
  </Element>
  <Element ID="x">
    ...
  </Element>
</Root>

现在让我说我有ID 3,并设法找到具有该ID的元素。此时,我想找到顶级父节点的ID(它的父节点是Root下面的一个级别)。在这种情况下,我想找到ID为1的元素。我可以这样做:

myElement.Parent.Parent

但我不知道它可能有多少级别 - 所以我可能需要递归。但是,我记得XDocument正在向前阅读。找到父母有多贵 - 递归?这样做的最佳方式是什么?

我的XML文件可能高达500k。

1 个答案:

答案 0 :(得分:1)

不,XDocument不是前瞻性的。你在想XStreamingElement吗?

我相信父作为XObject的一部分存储为字段,因此递归获取它是便宜的。