c# - XElement Nodes() 与 Elements() 有什么区别?

标签 c# .net xelement

文档说:


XContainer.Nodes方法() 按文档顺序返回此元素或文档的子节点的集合。

备注 请注意,内容不包括属性。在 LINQ to XML 中,属性不被视为树的节点。它们是与元素关联的名称/值对。

XContainer.Elements方法() 按文档顺序返回此元素或文档的子元素的集合。


所以看起来 Nodes() 有一个限制,但为什么它存在呢?使用 Nodes() 有什么可能的原因或优势吗?

最佳答案

原因很简单:XNode是所有 xml“部分”的基(抽象)类,XElement只是这样的一部分(所以 XElementXNode 的子类)。考虑这段代码:

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/

相关文章:

c# - 在 try block 中抛出异常有什么问题吗?

c# - 如何设置默认路径,然后按 WPF 中的 ShowDialog 按钮?

c# - Console.WriteLine ("text"+ 函数(参数));不起作用,但该指令分为两个 Console.Write 工作正常

c# - 包需要 NuGet 客户端版本 '2.12'

c# - 第一人称武器

mysql - Entity Framework 轮询

c# - 在矩形内绘制字符串的动态字体大小

whitespace - 如何从 XElement.ReadFrom(XmlReader) 创建的 XElement 对象中删除空格

c# - LINQ2XML 将所有 namespace 声明移动到根元素

xml - 使用 XElement 时如何包含换行符?