我已经查看了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);
发布于 2014-05-25 05:52:48
Descendants仅返回elements。DescendantNodes返回所有nodes (包括XComments、XText、XDocumentType等)。
考虑使用下面的xml来了解其中的区别:
<root>
<!-- comment -->
<foo>
<bar value="42"/>Oops!
</foo>
</root>
Descendants
将返回3个元素(root
,foo
,bar
)。DescendantNodes
将返回这三个元素和另外两个节点-文本和注释。
发布于 2014-05-25 05:52:38
Descendants
仅返回后代元素,而DescendantNodes
返回所有类型的节点(元素、属性、文本节点、注释等)
所以Descendants()
等同于DescendantNodes().OfType<XElement>()
。
https://stackoverflow.com/questions/23849946
复制相似问题