0

如果我有这样的 XML 文档

<Doc>
   <File>
      <ObjectID></ObjectID>
   </File>
</Doc>

它有时看起来像这样

<Doc>
   <Name />
   <File>
      <ObjectID></ObjectID>
   </File>
</Doc>

我怎样才能得到File-元素?
它们并不总是在同一级别,有时它们可​​以在根级别
也可能有时,它被多次放置在 Document 中(但它们处于同一级别)

更新

<File>-element 也可以有下面的<File>元素,不应该这样解析

<Doc>
   <Name />
   <File>
      <ObjectID></ObjectID>
      <RelatedTo>
         <File></File>
      </RelatedTo>
   </File>
</Doc>

在这种情况下,结果应该是

<File>
   <ObjectID></ObjectID>
   <RelatedTo>
      <File></File>
   </RelatedTo>
</File>
4

1 回答 1

3

作为s包含您的 XML 代码的字符串:

var document = XDocument.Parse(s);
var fileElements = document.Descendants("File").
                       ToArray();

请注意,您不会得到一个元素,而是一个数组。如果您的文档中只有一个,那么该数组将只有一个元素。

即使File元素是其他元素的子元素,上述方法也将起作用,但我不确定它们处于“根级别”是什么意思。你给我们带来的不就是这种情况吗?

编辑:使其适应作者的编辑:

var elementName = "File";
var firstFileElement = document.Descendants(elementName).
    First();
var fileElements = firstFileElement.Parent.Elements(elementName).
    ToArray();
于 2013-01-12T21:09:27.250 回答