LINQ to XML简介

  LINQ to XML是一种启用了LINQ的内存XML编程接口。使用LINQ to XML可以在.NET Framework编程语言中处理XML结构的数据。LINQ to XML可以将XML文档保存在内存中,并对内存中的XML文档进行查询、修改操作,以及将内存中的XML文档另存为XML文件。LINQ to XML与传统的DOM的最大不同之处在于:LINQ to XML提供了一种新的轻量级的对象模型。

  正是因为LINQ to XML集成了LINQ,才使得LINQ to XML查询、检索、操作XML文档变得更加简单。LINQ to XML查询XML文档的查询表达式与XPath在语法上不相同,但是,它们提供相似的功能。下面的实例代码使用LINQ演示了查询Book.xml文件中的根节点“Books”的方法。

XDocument doc = ///…省略了初始化代码
///查询根元素
IEnumerable<XElement> elements = from e in doc.Elements("Books")
select e;

  使用LINQ to XML可以对XML文档(或片段)实现以下功能或操作:

q      从文件或流加载XML文档,即读取XML文档的内容。

q      将XML文件序列化为文件或流,即XML文档的序列化操作。

q      使用函数构造更加简单、方便地从头开始创建一个新的XML文档。

q      使用LINQ更加简单、方便地查询XML文档。

q      添加、修改和删除XML文档中的元素、属性等信息。

q      使用XSD验证XML文档。

1.LINQ to XML基础类

  LINQ to XML提供了多个支持查询和操作XML文档的基础类,具体说明如下。

q      XElement类,表示XML文件中的元素。

q      XAttribute类,表示XML文件中的元素的属性(名称/值对)。

q      XDocument类,表示一个XML文档。

q      XDeclaration类,表示XML文件中XML声明。

q      XComment类,表示XML文件中一个XML注释,一般使用“<!-- 注释的内容 -->”格式表示。

q      XNamespace类,表示XML文件中的一个XML命名空间。

q      XDocumentType类,表示XML文件的文档类型定义(DTD)。

q      XName类,表示XML元素或属性的名称。

q      XCData类,表示包含CDATA的文本节点。

q      XNode类,表示XML文件中的一个节点,可以为元素、注释、文本、XML处理指令等。

q      XText类,表示一个文本节点。

q      XContainer类,表示可以包含子节点的节点,即充当一个节点“容器”。

q      XProcessingInstruction类,表示XML处理指令。

q      XObject类,表示XML文件中的节点或属性。

q      XObjectChange枚举,指定XObject对象引发的事件的事件类型。

q      XObjectChangeEventArgs类,为XObject对象引发的事件提供相关数据。

q      XNodeEqualityComparer类,用来比较两个节点是否相等。

q      XNodeDocumentOrderComparer类,提供用于比较节点的文档顺序

2.使用函数构造方法创建XML

  LINQ to XML提供了一种被称为“函数构造”的方式来创建XML元素(或文档或属性等)。其中,函数构造是指在单个语句中创建XML元素(或文档或属性等)的能力。LINQ to XML中的XElement函数构造具有以下2个特点:

q      XElement函数的参数的数据类型为Object的params数组。因此,该函数可以使用任意数量的对象(参数的值)。

q      XElement构造函数可以使用采用多种类型的参数。

  下面的实例代码使用LINQ to XML调用XDocument函数构造了一个XML文档,并在该文档中添加了XML声明、根元素Books、一级子元素Book及其ID属性、二级子元素(NO、Name、Price和Remark)等内容。

XDocument doc = new XDocument(
         new XDeclaration("1.0","utf-8","yes"),
         new XElement("Books",
                  new XElement("Book",
                            new XAttribute("ID","104"),      ///添加属性ID
                            new XElement("No","0004"),    ///添加元素No
                    new XElement("Name","Book 0004"),  ///添加元素Name                  new XElement("Price","300"),    ///添加元素Price
                            new XElement("Remark","This is a book 0004.")    ///添加元素Remark
                   )
         )
);

来源:http://blog.csdn.net/linqmail/article/details/2341438

加支付宝好友偷能量挖...


评论(0)网络
阅读(47)喜欢(0)asp.net-linq