为什么XNode在System.XML.Linq命名空间而不是System.XML?

时间:2015-08-25 12:51:13

标签: .net xml linq

我正在编写一些涉及XML比较并使用XNode的代码。

看起来XNode(和另一个XObject)只是用于读取/操作XML。

为什么这是在Linq名称空间下?

2 个答案:

答案 0 :(得分:3)

因为X *系列类是.NET 3.5引入的Linq to XML的一部分,而System.Xml中的Xml *类是来自框架的原始XML解析套件。

每个命名空间中的类通常不兼容,并且使用不同的模式来遍历XML。如果您希望使用其中一个,通常更可取的是使用更新的框架。

答案 1 :(得分:1)

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   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树中节点(元素,注释,文档类型,处理指令或文本节点)的抽象概念。