为啥 XNode 在 System.XML.Linq 命名空间而不是 System.XML?
Posted
技术标签:
【中文标题】为啥 XNode 在 System.XML.Linq 命名空间而不是 System.XML?【英文标题】:Why is XNode in the System.XML.Linq namespace and not System.XML?为什么 XNode 在 System.XML.Linq 命名空间而不是 System.XML? 【发布时间】:2015-11-19 04:28:57 【问题描述】:我正在编写一些涉及 XML 比较和使用 XNode 的代码。
XNode(和其他 XObject)似乎只是用于读取/操作 XML。
为什么在 Linq 命名空间下?
【问题讨论】:
我认为 MS 应该对此负责...... 【参考方案1】:因为 X* 系列类是 .NET 3.5 引入的 Linq to XML 的一部分,而 System.Xml
中的 Xml* 系列类是框架中的原始 XML 解析套件。
每个命名空间中的类通常是不兼容的,并且使用不同的模式来遍历 XML。如果您希望使用其中一种,通常建议使用较新的框架。
【讨论】:
【参考方案2】:MS 写道:
System.Xml 命名空间提供基于标准的支持 处理 XML。
来源:https://msdn.microsoft.com/en-us/library/system.xml%28v=vs.110%29.aspx
System.Xml.Linq 命名空间包含 LINQ to XML 的类。 LINQ to XML 是一个内存中的 XML 编程接口,使您能够 高效、轻松地修改 XML 文档。 使用 LINQ to XML,您可以:
列表项从文件或流中加载 XML。
将 XML 序列化为文件或流。
使用函数式构造从头开始创建 XML 树。
使用 LINQ 查询查询 XML 树。
操作内存中的 XML 树。
使用 XSD 验证 XML 树。
结合使用这些功能将 XML 树从一种形状转换为另一种形状。
来源:https://msdn.microsoft.com/en-us/library/system.xml.linq%28v=vs.110%29.aspx
所以,XNode
属于 System.XML.Linq
命名空间,因为代表 XML 树中节点(元素、注释、文档类型、处理指令或文本节点)的抽象概念。
【讨论】:
"XNode 属于 System.XML.Linq 命名空间,因为它表示 XML 树中节点(元素、注释、文档类型、处理指令或文本节点)的抽象概念。"这和 Linq 有什么关系? 这个粗体摘要最好取自命名空间文档,而不是 XNode 文档,例如XNode 作为 LINQ to XML 的一部分实现,以启用 Linq 查询:“System.Xml.Linq 命名空间包含 LINQ to XML 的类”。以上是关于为啥 XNode 在 System.XML.Linq 命名空间而不是 System.XML?的主要内容,如果未能解决你的问题,请参考以下文章