当前位置:主页   - 电脑 - 网站开发 - ASP.Net
Linq To Xml学习 - 1.LINQ to XML 概述
来源:网络   作者:   更新时间:2012-08-04
收藏此页】    【字号    】    【打印】    【关闭

  它将 XML 文档置于内存中,这一点很像文档对象模型 (DOM)。 您可以查询和修改 XML 文档,修改之后,可以将其另存为文件,也可以将其序列化然后通过网络发送。 但是,LINQ to XML 与 DOM 不同: 它提供一种新的对象模型,这是一种更轻量的模型,使用也更方便,这种模型利用了 Visual C# 2008 在语言方面的改进。

  LINQ to XML 最重要的优势是它与 Language-Integrated Query (LINQ) 的集成。 由于实现了这一集成,因此,可以对内存 XML 文档编写查询,以检索元素和属性的集合。 LINQ to XML 的查询功能在功能上(尽管不是在语法上)与 XPath 和 XQuery 具有可比性。 Visual C# 2008 集成 LINQ 后,可提供更强的类型化功能、编译时检查和改进的调试器支持。

  通过将查询结果用作 XElement 和 XAttribute 对象构造函数的参数,实现了一种功能强大的创建 XML 树的方法。 这种方法称为“函数构造”,利用这种方法,开发人员可以方便地将 XML 树从一种形状转换为另一种形状。

  LINQ to XML 提供了改进的 XML 编程接口,这一点可能与 LINQ to XML 的 LINQ 功能同样重要。 通过 LINQ to XML,对 XML 编程时,您可以实现任何预期的操作,包括:

  从文件或流加载 XML。

  将 XML 序列化为文件或流。

  使用函数构造从头开始创建 XML。

  使用类似 XPath 的轴查询 XML。

  使用 Add、Remove、ReplaceWith 和 SetValue 等方法对内存 XML 树进行操作。

  使用 XSD 验证 XML 树。

  使用这些功能的组合,可将 XML 树从一种形状转换为另一种形状。

  创建 XML 树是否方便,这一点非常重要。 例如,若要创建一个小型 XML 树,可以编写以下 C# 代码:

XElement contacts =
  new XElement("Contacts",
    new XElement("Contact",
      new XElement("Name", "Patrick Hines"),
      new XElement("Phone", "206-555-0144",
        new XAttribute("Type", "Home")),
      new XElement("phone", "425-555-0145",
        new XAttribute("Type", "Work")),
      new XElement("Address",
        new XElement("Street1", "123 Main St"),
        new XElement("City", "Mercer Island"),
        new XElement("State", "WA"),
        new XElement("Postal", "68042")
      )
    )
  );

  请注意,缩进用于构造 XML 树的代码可显示基础 XML 的结构。

  直接使用 XML 元素

  在使用 XML 编程时,主要关注的通常是 XML 元素,也可能关注属性。 在 LINQ to XML 中,可以直接使用 XML 元素和属性。 例如,可以执行以下操作:

  创建 XML 元素而根本不使用文档对象。 当必须使用 XML 树的片段时,这可简化编程。

  直接从 XML 文件加载 T:System.Xml.Linq.XElement 对象。

  将 T:System.Xml.Linq.XElement 对象序列化为文件或流。

  使用 LINQ to XML 时,仅在文档的根级别添加注释或处理说明时,才需使用 XDocument 

  名称和命名空间的简化处理

  处理名称、命名空间和命名空间前缀通常是 XML 编程的复杂部分。LINQ to XML 完全不需要处理命名空间前缀,从而简化了名称和命名空间。 可以轻松控制命名空间前缀。 但如果您决定不显式控制命名空间前缀,则在序列化时,LINQ to XML 将会分配命名空间前缀(如果需要)或使用默认命名空间进行序列化。 如果使用默认命名空间,则生成的文档中将没有命名空间前缀。

  LINQ to XML 也不需要用户理解什么是 NameTable 以及其使用方式。

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明