【问题标题】: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 应该对此负责......

标签: .net xml linq


【解决方案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 的类”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    相关资源
    最近更新 更多