我看过Nodes() vs DescendantNodes() usages?来了解.Nodes().DescendantNodes()之间的区别,但是两者之间有什么区别:

XDocument.Descendants()和XDocument.DescendantNodes()?

var xmlDoc = XDocument.Load(@"c:\Projects\Fun\LINQ\LINQ\App.config");
var descendants = xmlDoc.Descendants();
var descendantNodes = xmlDoc.DescendantNodes();

foreach (var d in descendants)
    Console.WriteLine(d);

foreach (var d in descendantNodes)
    Console.WriteLine(d);

最佳答案

Descendants仅返回elementsDescendantNodes返回所有nodes(包括XComments,XText,XDocumentType等)。

考虑使用以下xml来查看差异:

<root>
  <!-- comment -->
  <foo>
    <bar value="42"/>Oops!
  </foo>
</root>
Descendants将返回3个元素(rootfoobar)。 DescendantNodes将返回这三个元素以及另外两个节点-文本和注释。

10-07 23:05