LINQ基础学习之LINQ to XML
LINQ to XML是很前沿的一项技术,他的功能十分的强大,很多人对此可能还不是很熟悉,所以笔者来向大家介绍一下。
LINQ to XML 提供使用 .NET 语言集成查询 (LINQ) Framework 的内存中 XML 编程接口。LINQ to XML 使用最新的 .NET Framework 语言功能,相当于更新的和重新设计的文档对象模型 (DOM) XML 编程接口。
.NET Framework提供了大量的API用于处理XML数据. 从Framework 3.5开始, 对于处理常规XML文档的第一选择将是LINQ to XML. LINQ to XML包含一个轻量级的LINQ友好的XML文档对象模型, 以及一系列附加的查询操作符.。
在多数场景中, 它可以被当中是先前的W3C兼容的DOM模型的替换(即XmlDocument). LINQ to XML DOM设计极其优良并且可以高效执行. 即使没有LINQ, LINQ to XML DOM作为对低级XmlReader和XmlWriter的门面(Facade)包装也是非常有价值的.
所有的LINQ to XML类型都定义在System.Xml.Linq命名空间下.
LINQ to XML架构概貌
考虑以下的XML文件
对于所有的XML文件, 我们首先定义一个声明, 然后定义一个root元素, 它的名称是customer. customer元素包含有两个属性, 并各自有名称(id和status)以及对应值(”123″和”archived”). customer还拥有两个子元素, firstName和lastName, 它们还包含了各自的简单文本内容(”Joe”和”Bloggs”).
所有的这些构件C声明,元素,属性,值以及文本内容, 都可以用一个类来展现. 如果这样的一个类型拥有集合属性来存储子内容的话, 我们可以聚合一棵对象树来描述一个文档. 这被称为文档对象模型, 即DOM.
LINQ to XML包含两个内容:
一个XML DOM, 我们称它为X-DOM
一系列附加的查询操作符
正如你可能期待的那样, X-DOM的组成类型包括像XDocument, XElement以及XAttribute. 有趣的是, X-DOM的类型并不依赖于LINQC在没有编写任何LINQ to XML查询的情况下你依然可以加载, 实例化, 更新以及保存一个X-DOM.
相反的, 你能够使用LINQ去查询一个DOM并创建一个老式的W3C兼容的类型. 然而, 过程可能会令人沮丧并且会有一定的限制. 一个区别(与W3C DOM比)的特征是XDOM是LINQ友好的, 这意味着: