文档说:
XContainer.Nodes方法() 按文档顺序返回此元素或文档的子节点的集合。
备注 请注意,内容不包括属性。在 LINQ to XML 中,属性不被视为树的节点。它们是与元素关联的名称/值对。
XContainer.Elements方法() 按文档顺序返回此元素或文档的子元素的集合。
所以看起来 Nodes() 有一个限制,但为什么它存在呢?使用 Nodes() 有什么可能的原因或优势吗?
最佳答案
原因很简单:XNode
是所有 xml“部分”的基(抽象)类,XElement
只是这样的一部分(所以 XElement
是 XNode
的子类)。考虑这段代码:
XDocument doc = XDocument.Parse("<root><el1 />some text<!-- comment --></root>");
foreach (var node in doc.Root.Nodes()) {
Console.WriteLine(node);
}
foreach (var element in doc.Root.Elements()) {
Console.WriteLine(element);
}
第二个循环(在 Elements()
上)将只返回一项:<el />
然而,第一个循环也将返回文本节点 ( some text
) 和评论节点 ( <!-- comment -->
),因此您会看到不同之处。
你可以看到XNode
的其他后代有documentaiton XNode 类。
关于c# - XElement Nodes() 与 Elements() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37744511/