Linq To Xml学习-起源与实用

LINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口,使用它,可以在 .NET Framework 编程语言中处理 XML

  它将 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 树,IC报价网可以编写以下 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")
  )
  )
  );
  请注意,缩进用于构造IC报价网 XML 树的代码可显示基础 XML 的结构。

  直接使用 XML 元素

  在使用 XML 编程时,主要关注的通常是 XML 元素,也可能关注属性。 在IC报价网 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 以及其使用方式。

posted @ 2011-05-23 19:15  ph580  阅读(117)  评论(0编辑  收藏  举报