使用LINQ访问XML

1. LINQ to XML 简介web

 1.1. 使用 LINQ 访问 XML
  • 更好的操做 XML
  • 支持语言集成查询
  • 更方便、更快速、更简单、更智能的XML API编程

 1.2. LINQ to XML
  • LINQ to XML 是一种启用了 LINQ 的内存XML 编程接口,使用它,能够在 .NET
Framework 编程语言中处理XML。
  • 它将 XML 文档置于内存中,这一点很像文档对象模型(DOM)。
  • 它提供一种新的对象模型,这是一种更轻量的模型,使用也更方便,这种模型利用
了Visual C# 2008 在语言方面的改进。asp.net

2. LINQ to XML 类编程语言

 2.1. XElement 类
  • 它表示一个 XML 元素
  • 能够使用该类
    – 建立元素
    – 更改元素内容
    – 添加、更改或删除子元素
    – 向元素中添加属性
    – 以文本格式序列化元素内容
  • 能够与 System.Xml 中的其余类(例如XmlReader、XmlWriter 和
XslCompiledTransform)进行互操做。函数

 2.2. XAttribute 类
  • 属性是与元素关联的名称/值对
  • XAttribute 类表示 XML 属性
  • 属性集合的LINQ 查询表达式与元素集合的LINQ 查询表达式看起来很是类似。spa

 2.3. XDocument 类
  • XDocument 类包含有效的 XML 文档所需的信息。其中包括XML 声明、处理指令和注释。
  • 若是须要XDocument 类提供的特定功能,您只需建立XDocument 对象。在不少状况下,能够
直接使用Xelement。直接使用XElement 是一种比较简单的编程模型。
  • XDocument 是从XContainer 派生的。所以,它能够包含子节点。可是,XDocument 对象只能有
一个子XElement 节点。这反映了XML 标准,即在 XML 文档中只能有一个根元素。.net

3. 使用LINQ to XMLcode

 3.1. XElement 类功能
  • 构造 XML 树
  • 序列化 XML 树
  • 经过轴方法检索XML 数据
  • 查询XML 树
  • 修改 XML 树orm

 3.2. 构造 XML 树
  • “函数构造”方法
    –经过将查询结果用做 XElement 和 XAttribute对象构造函数的参数,实现了一种功能强大的
建立 XML 树的方法。
    – 利用这种方法,开发人员能够方便地将XML树从一种形状转换为另外一种形状。
  • 分析字符串
  • 从文件加载对象

 3.3. 序列化 XML 树
  • XML 树能够序列化为
    –字符串
    – File
    – TextWriter
    – XmlWriter
    – XmlReader

 3.4. LINQ to XML 轴

 3.5. 查询与转换 XML 树
  • 基本查询
  • 使用LINQ查询操做符查询
  • 转换XML 格式
  • 将集合、数据转换成XML
  • 转换成其它数据格式

 3.6. 修改 XML 树
  • 内存中 XML 树修改与函数构造
  • 向 XML 树中添加元素、属性和节点
  • 修改XML 树中的元素、属性和节点
  • 从XML 树中移除元素、属性和节点
  • 维护名称/值对
  • 更改整个XML 树的命名空间

4. 实现:生成RSS

NorthwindDataContext db = new NorthwindDataContext();
XElement rssRoot = new XElement("rss",
new XAttribute("version", "2.0"),
new XElement(“channel”,
new XElement("title", "My RSS Feed"),
new XElement("link", "http://weblogs.asp.net"),
new XElement("description", "Northwind Products Feed"),
from product in db.Products
orderby product.ProductName descending
select new XElement("item",
new XElement("title", product.ProductName),
new XElement("link", "p.aspx?id="+product.ProductID),
new XElement("description", "Supplier: " +
product.Supplier.CompanyName)
)
)
);
Response.Write(rssRoot.ToString());
相关文章
相关标签/搜索