Nodes()とDescendantNodes()の使用法? を見て、.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);
子孫 は 要素 のみを返します。 DescendantNodes すべてを返します nodes (XComments、XText、XDocumentTypeなどを含む)。
違いを確認するには、次のxmlを検討してください。
<root>
<!-- comment -->
<foo>
<bar value="42"/>Oops!
</foo>
</root>
Descendants
は3つの要素(root
、foo
、bar
)を返します。 DescendantNodes
は、これら3つの要素と、他の2つのノード(テキストとコメント)を返します。
Descendants
は子孫のみを返しますelements、DescendantNodes
はすべてのタイプのノード(要素、属性、テキストノード、コメントなど)を返します
したがって、Descendants()
はDescendantNodes().OfType<XElement>()
と同等です。