LINQ to XML.docx

上传人:b****4 文档编号:24296485 上传时间:2023-05-26 格式:DOCX 页数:39 大小:658.29KB
下载 相关 举报
LINQ to XML.docx_第1页
第1页 / 共39页
LINQ to XML.docx_第2页
第2页 / 共39页
LINQ to XML.docx_第3页
第3页 / 共39页
LINQ to XML.docx_第4页
第4页 / 共39页
LINQ to XML.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

LINQ to XML.docx

《LINQ to XML.docx》由会员分享,可在线阅读,更多相关《LINQ to XML.docx(39页珍藏版)》请在冰豆网上搜索。

LINQ to XML.docx

LINQtoXML

LINQtoXML

  LINQtoXML是LINQ系列技术中的一种,它主要用来处理XML结构的数据。

LINQtoXML提供了修改文档对象模型的内存文档和支持LINQ查询表达式等功能,以及处理XML文档的全新的编程接口。

本章节介绍LINQtoXML提供的基础类,以及使用LINQtoXML查询、创建、修改和删除XML文档的方法。

1LINQtoXML概述

  LINQtoXML是一种启用了LINQ的内存XML编程接口。

使用LINQtoXML可以在.NETFramework编程语言中处理XML结构的数据。

LINQtoXML可以将XML文档保存在内存中,并对内存中的XML文档进行查询、修改操作,以及将内存中的XML文档另存为XML文件。

LINQtoXML与传统的DOM的最大不同之处在于:

LINQtoXML提供了一种新的轻量级的对象模型。

正是因为LINQtoXML集成了LINQ,才使得LINQtoXML查询、检索、操作XML文档变得更加简单。

LINQtoXML查询XML文档的查询表达式与XPath在语法上不相同,但是,它们提供相似的功能。

下面的实例代码使用LINQ演示了查询Book.xml文件中的根节点“Books”的方法。

XDocumentdoc=///…省略了初始化代码

///查询根元素

IEnumerableelements=fromeindoc.Elements("Books")

selecte;

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

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

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

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

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

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

❑使用XSD验证XML文档。

1.1LINQtoXML基础类

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

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

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

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

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

❑XComment类,表示XML文件中一个XML注释,一般使用“

--注释的内容-->”格式表示。

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

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

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

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

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

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

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

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

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

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

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

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

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

1.2使用函数构造方法创建XML

LINQtoXML提供了一种被称为“函数构造”的方式来创建XML元素(或文档或属性等)。

其中,函数构造是指在单个语句中创建XML元素(或文档或属性等)的能力。

LINQtoXML中的XElement函数构造具有以下2个特点:

❑XElement函数的参数的数据类型为Object的params数组。

因此,该函数可以使用任意数量的对象(参数的值)。

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

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

XDocumentdoc=newXDocument(

newXDeclaration("1.0","utf-8","yes"),

newXElement("Books",

newXElement("Book",

newXAttribute("ID","104"),///添加属性ID

newXElement("No","0004"),///添加元素No

newXElement("Name","Book0004"),///添加元素Name

newXElement("Price","300"),///添加元素Price

newXElement("Remark","Thisisabook0004.")///添加元素Remark

);

2LINQtoXML基础类

  本小节主要介绍了LINQtoXML提供查询和操作XML文档的基础类,如XElement、XAttribute、XDocument、XDeclaration、XComment、XNamespace等。

2.1XElement类

  XElement类表示XML文件中的一个元素(XML文件的基本组成部分)。

一般情况下,每一个元素都必须包含其名称。

它还可以包含以下4个组成内容:

❑元素(由XElement类表示),作为元素的子元素。

❑文本(由XText类表示)。

❑注释(由XComment类表示),将注释作为元素的一个子元素。

❑XML处理指令(由XProcessingInstruction类表示),用来指定处理该XML文件的处理器。

XElement类提供了多个属性获取或操作XML文件中的元素,如获取元素名称的Name属性、获取元素的值的Value属性等。

XElement类的属性如表所示。

表XElement类的属性

属性

说明

Name

元素的名称。

Value

元素的值。

FirstAttribute

元素的第一个属性。

LastAttribute

元素的最后一个属性。

HasAttributes

表示元素是否包含属性。

HasElements

表示元素是否包含元素。

IsEmpty

表示是否为一个空元素。

EmptySequence

空的元素集合。

另外,XElement类还提供了多个方法操作XML文件中的元素,如设置元素的值的SetValue()方法、移除元素的所有节点和属性的RemoveAll()方法等。

XElement类的方法如表所示。

表XElement类的方法

方法

说明

AncestorsAndSelf()

自身及其上级元素的集合。

DescendantsAndSelf()

自身及其子元素元素的集合。

DescendantNodesAndSelf()

自身及其子节点的集合。

Load()

导入XML文件或片段,并创建为XElement类实例。

Parse()

解释XML文件或片段,。

Save()

将XElement实例保存为XML文件。

Attribute()

获取指定的属性。

Attributes()

获取该元素的所有属性。

GetDefaultNamespace()

元素的默认命名空间。

GetNamespaceOfPrefix()

与元素相关的命名空间的。

GetPrefixOfNamespace()

获取与元素的命名控件的前缀。

ReplaceAll()

替换该元素自动的属性。

RemoveAll()

移除该元素的所有内容。

ReplaceAttributes()

替换该元素的所有属性。

RemoveAttributes()

移除元素的属性。

SetValue()

设置该元素的值。

SetAttributeValue()

设置该元素的属性的值。

SetElementValue()

设置该元素的子元素的值。

下面的实例代码创建了名称为Advertisements的元素,并添加了两个子元素Ad。

同时,Ad元素也包含Name和Url元素及其值。

具体步骤如下。

(1)创建Advertisements元素及其子元素和值。

(2)使用网页显示Advertisements元素的内容。

(3)设置网页的输出格式为“text/xml”,并中止网页的输出操作。

privatevoidXElementClass()

{///创建一个XML元素

XElementelement=newXElement("Advertisements",

newXElement("Ad",

newXElement("Name","w3c"),///添加元素Name

newXElement("Url","")///添加元素Url

),

newXElement("Ad",

newXElement("Name","Microsoft"),///添加元素Name

newXElement("Url","")///添加元素Url

);

///显示XML文件的内容

Response.Write(element);

///设置网页显示的形式为XML文件

Response.ContentType="text/xml";

Response.End();

}

Sample_11项目中的LinqtoXmlBaseClass.aspx页面测试了上述实例代码(XElementClass()函数),测试结果如图所示。

2.2XAttribute类

  XAttribute类表示XML文件中的一个属性,即表示一个名称/值对。

在XML文件中,属性一般用于描述元素的特性,一个元素可以不包含属性,也可以包含一个或多个属性。

XAttribute类提供了多个属性获取或操作XML文件中的元素的属性,如获取属性名称的Name属性、获取属性的值的Value属性等。

XAttribute类的属性如表11.3所示。

表XAttribute类的属性

属性

说明

Name

属性的名称。

Value

属性的值。

NextAttribute

其父元素的下一个属性。

PreviousAttribute

其父元素的上一个属性。

NodeType

节点的节点类型。

IsNamespaceDeclaration

表示该属性是否为命名空间的声明。

EmptySequence

空的属性集合。

另外,XAttribute类还提供了多个方法操作XML文件中的元素的属性,如设置属性的值的SetValue()方法、移除属性自身的Remove()方法等。

XAttribute类的方法如表11.4所示。

表XAttribute类的方法

方法

说明

Remove

从其父元素中移除该属性。

SetValue()

设置该属性的值。

下面的实例代码创建了名称为Advertisements的元素,并添加了两个子元素Ad。

同时,还为Ad元素设置了ID属性、Name和Url元素及其值。

具体步骤如下。

(1)创建Advertisements元素,并创建两个子元素Ad。

其中,Ad元素包含了ID属性、Name和Url元素。

第一个Ad元素的ID属性的值为1,第二个Ad元素的ID属性的值为2。

(2)使用网页显示Advertisements元素的内容。

(3)设置网页的输出格式为“text/xml”,并中止网页的输出操作。

privatevoidXAttributeClass()

{///创建一个XML元素

XElementelement=newXElement("Advertisements",

newXElement("Ad",

///创建属性

newXAttribute("ID","1"),///添加属性ID

newXElement("Name","w3c"),///添加元素Name

newXElement("Url","")///添加元素Url

),

newXElement("Ad",

///创建属性

newXAttribute("ID","2"),///添加属性ID

newXElement("Name","Microsoft"),///添加元素Name

newXElement("Url","")///添加元素Url

);

///显示XML文件的内容

Response.Write(element);

///设置网页显示的形式为XML文件

Response.ContentType="text/xml";

Response.End();

}

Sample_11项目中的LinqtoXmlBaseClass.aspx页面测试了上述实例代码(XAttributeClass()函数),测试结果如图所示。

2.3XDocument和XDeclaration类

  XDocument类表示一个XML文档,XDeclaration类表示XML文件中XML声明。

其中,XML声明用来声明XML文件的版本、编码,以及XML文件的是否独立。

一般情况下,在创建一个XML文件时,需要添加XML声明。

XDocument类提供了多个属性获取XML文件的属性,如获取XML文件的XML声明的Declaration属性、获取XML文件的根元素的Root属性等。

XAttribute类的属性如表所示。

表XDocument类的属性

属性

说明

Declaration

文件的XML声明。

Root

文件的根元素。

DocumentType

文件的文档类型。

NodeType

文件的节点类型。

另外,XDocument类还提供了多个方法操作XML文件,如导入XML文件内容的Load()方法、解释XML文件的Parse()方法等。

XAttribute类的方法如表所示。

表XDocument类的方法

方法

说明

Load

导入指定地址的XML文件的内容,,并创建为XDocument类实例。

Save

将XDocument类的实例保存为指定地址的XML文件。

Parse

读取指定的XML文件,并解释该XML文件中的内容。

XDeclaration类提供了3个属性描述XML声明,具体说明如表所示。

表XDeclaration类的属性

属性

说明

Version

XML文件的版本。

Encoding

XML文件的编码。

Standalone

指定XML文件是否独立。

下面的实例代码使用XDocument类创建一个XML文件,并保存为“file.xml”文件。

其中,该XML文件的根元素为Advertisements元素。

根元素又包含两个子元素Ad,Ad元素设置了ID属性、Name和Url元素及其值。

具体步骤如下。

(1)创建XDocument类的实例doc,即创建一个XML文件。

(2)使用XDeclaration类创建该XML文件的声明。

(3)使用XElement类创建该XML文件包含的元素Advertisements,以及该元素的子元素及其属性等内容。

(4)调用Save()方法将doc实例保存为XML文件“file.xml”。

(5)使用网页显示“file.xml”文件的内容。

(6)设置网页的输出格式为“text/xml”,并中止网页的输出操作。

privatevoidXDocumentClass()

{///设置新的XML文件保存的地址

stringxmlFilePath=Server.MapPath("Data/file.xml");

///创建一个新的XML文档

XDocumentdoc=newXDocument(

newXDeclaration("1.0","utf-8","yes"),

newXElement("Advertisements",

newXElement("Ad",

newXAttribute("ID","1"),///添加属性ID

newXElement("Name","w3c"),///添加元素Name

newXElement("Url","")///添加元素Url

),

newXElement("Ad",

newXAttribute("ID","2"),///添加属性ID

newXElement("Name","Microsoft"),///添加元素Name

newXElement("Url","")///添加元素Url

);

///保存为XML文件

doc.Save(xmlFilePath);

///显示XML文件的内容

Response.Write(doc);

///设置网页显示的形式为XML文件

Response.ContentType="text/xml";

Response.End();

}

Sample_11项目中的LinqtoXmlBaseClass.aspx页面测试了上述实例代码(XDocumentClass()函数),测试结果如图所示。

2.4XComment类

  XComment类表示XML文件中的一个XML注释,一般使用“

--注释的内容-->”格式表示。

开发人员可以按照操作元素的方法来操作XML注释,如把XML注释添加为元素的子节点,甚至还可以把XML注释放置在与根元素并列的位置。

XComment类只包含2个属性:

NodeType和Value。

其中,NodeType属性表示XML注释的节点类型,Value属性表示XML注释的注释内容。

下面的实例代码创建了名称为Advertisements的元素,并添加了两个子元素Ad。

同时,还为Ad元素设置了ID属性、Name和Url元素及其值。

最后,还为第二个Ad元素添加了注释。

具体步骤如下。

(1)创建Advertisements元素,并创建两个子元素Ad。

其中,Ad元素包含了ID属性、Name和Url元素。

第一个Ad元素的ID属性的值为1,第二个Ad元素的ID属性的值为2。

(2)使用XComment类为第二个Ad元素创建注释“Thisisawebsite.”。

(3)使用网页显示Advertisements元素的内容。

(4)设置网页的输出格式为“text/xml”,并中止网页的输出操作。

privatevoidXCommentClass()

{///创建一个XML元素

XElementelement=newXElement("Advertisements",

newXElement("Ad",

newXAttribute("ID","1"),///添加属性ID

newXElement("Name","w3c"),///添加元素Name

newXElement("Url","")///添加元素Url

),

newXElement("Ad",

newXComment("Thisisawebsite."),///添加注释

newXAttribute("ID","2"),///添加属性ID

newXElement("Name","Microsoft"),///添加元素Name

newXElement("Url","")///添加元素Ur

);

///显示XML文件的内容

Response.Write(element);

///设置网页显示的形式为XML文件

Response.ContentType="text/xml";

Response.End();

}

Sample_11项目中的LinqtoXmlBaseClass.aspx页面测试了上述实例代码(XCommentClass()函数),测试结果如图所示。

2.5XNamespace类

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

XML命名空间一般表示名称为“xmlns”的名称/值对。

XNamespace类提供了4个属性获取与XML命名空间相关的值,如命名空间的URI、与XMLURI相关的XNamespace对象等。

XNamespace类的属性如表所示。

表XDocument类的属性

属性

说明

NamespaceName

命名空间的URI。

Xml

获取与XMLURI对应的XNamespace对象。

Xmlns

获取与xmlnsURI对应的XNamespace对象。

None

获取不与命名空间对应的XNamespace对象。

下面的实例代码创建了名称为Advertisements的元素,并添加了两个子元素Ad。

同时,还为Ad元素设置了ID属性、Name和Url元素及其值。

最后,还为第二个Ad元素添加了注释,为第二个Ad元素的子元素URL添加了命名空间。

具体步骤如下。

(1)创建Advertisements元素,并创建两个子元素Ad。

其中,Ad元素包含了ID属性、Name和Url元素。

第一个Ad元素的ID属性的值为1,第二个Ad元素的ID属性的值为2。

(2)使用XComment类为第二个Ad元素创建注释“Thisisawebsite.”。

(3)使用XNamespace类为第二个Ad元素的子元素URL添加了命名空间,并指定的连接地址(URL)为“”。

(4)使用网页显示Advertisements元素的内容。

(5)设置网页的输出格式为“text/xml”,并中止网页的输出操作。

privatevoidXNamespaceClass()

{///创建命名空间

XNamespacexns="";

///创建一个XML元素

XElementelement=newXElement("Advertisements",

newXElement("Ad",

newXAttribute("ID","1"),///添加属性ID

newXElement("Name","w3c"),///添加元素

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1