当前位置: 首页 > 工具软件 > LINQ to XSD > 使用案例 >

精通LINQ--11.1 LINQ to XML概述

酆茂才
2023-12-01

 

  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文档。

1LINQ 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函数的参数的数据类型为Objectparams数组。因此,该函数可以使用任意数量的对象(参数的值)。

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

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

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

                   )

         )

);

 类似资料: