LINQ to XML提供查询和操作XML文档的基础类(整理)
本小节主要介绍了LINQ to XML提供查询和操作XML文档的基础类,如XDocument、XElement、XAttribute、XDeclaration、XComment、XNamespace等。
XDocument是.net 3.5为Linq for XML准备的轻量级Document对象,在功能上他和XmlDocument差不多,但是配合Linq使用更方便而已。
一、XDocument属性以及利用XDocument创建XML文档。
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”。
private void XDocumentClass()
{ ///设置新的XML文件保存的地址
string xmlFilePath = Server.MapPath("Data/file.xml");
///创建一个新的XML文档
XDocument doc = new XDocument(
new XDeclaration("1.0","utf-8","yes"),
new XElement("Advertisements",
new XElement("Ad",
new XAttribute("ID","1"), ///添加属性ID
new XElement("Name","w3c"), ///添加元素Name
new XElement("Url","http://www.w3c.com") ///添加元素Url
),
new XElement("Ad",
new XAttribute("ID","2"), ///添加属性ID
new XElement("Name","Microsoft"), ///添加元素Name
new XElement("Url","http://www.microsoft.com") ///添加元素Url
)
)
);
///保存为XML文件
doc.Save(xmlFilePath);
///显示XML文件的内容
Response.Write(doc);
///设置网页显示的形式为XML文件
Response.ContentType = "text/xml";
Response.End();
}
二、XElement类
XElement类表示XML文件中的一个元素(XML文件的基本组成部分)。一般情况下,每一个元素都必须包含其名称。它还可以包含以下4个组成内容:
1) 元素(由XElement类表示),作为元素的子元素。
2) 文本(由XText类表示)。
3) 注释(由XComment类表示),将注释作为元素的一个子元素。
4) XML处理指令(由XProcessingInstruction类表示),用来指定处理该XML文件的处理器。
XElement类提供了多个属性获取或操作XML文件中的元素,如获取元素名称的Name属性、获取元素的值的Value属性等。XElement类的属性如表所示。
属 性 | 说 明 |
Name | 元素的名称。 |
Value | 元素的值。 |
FirstAttribute | 元素的第一个属性。 |
LastAttribute | 元素的最后一个属性。 |
HasAttributes | 表示元素是否包含属性。 |
HasElements | 表示元素是否包含元素。 |
IsEmpty | 表示是否为一个空元素。 |
EmptySequence | 空的元素集合。 |
另外,XElement类还提供了多个方法操作XML文件中的元素,如设置元素的值的SetValue()方法、移除元素的所有节点和属性的RemoveAll()方法等。XElement类的方法如表所示。
方 法 | 说 明 |
AncestorsAndSelf() | 自身及其上级元素的集合。 |
DescendantsAndSelf() | 自身及其子元素元素的集合。 |
DescendantNodesAndSelf() | 自身及其子节点的集合。 |
Load() | 导入XML文件或片段,并创建为XElement类实例。 |
Parse() | 解释XML文件或片段,。 |
Save() | 将XElement实例保存为XML文件。 |
Attribute() | 获取指定的属性。 |
Attributes() | 获取该元素的所有属性。 |
GetDefaultNamespace() | 元素的默认命名空间。 |
GetNamespaceOfPrefix() | 与元素相关的命名空间的。 |
GetPrefixOfNamespace() | 获取与元素的命名控件的前缀。 |
ReplaceAll() | 替换该元素自动的属性。 |
RemoveAll() | 移除该元素的所有内容。 |
ReplaceAttributes() | 替换该元素的所有属性 |
RemoveAttributes() | 移除元素的属性。 |
SetValue() | 设置该元素的值。 |
SetAttributeValue() | 设置该元素的属性的值。 |
SetElementValue() | 设置该元素的子元素的值。 |
三、XAttribute类
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() | 设置该属性的值。 |
四、XComment类
XComment类表示XML文件中的一个XML注释,一般使用“<!-- 注释的内容 -->”格式表示。开发人员可以按照操作元素的方法来操作XML注释,如把XML注释添加为元素的子节点,甚至还可以把XML注释放置在与根元素并列的位置。
XComment类只包含2个属性:NodeType和Value。其中,NodeType属性表示XML注释的节点类型,Value属性表示XML注释的注释内容。
Sample:
private void XCommentClass()
{ ///创建一个XML元素
XElement element = new XElement("Advertisements",
new XElement("Ad",
new XAttribute("ID","1"), ///添加属性ID
new XElement("Name","w3c"), ///添加元素Name
new XElement("Url","http://www.w3c.com") ///添加元素Url
),
new XElement("Ad",
new XComment("This is a website."), ///添加注释
new XAttribute("ID","2"), ///添加属性ID
new XElement("Name","Microsoft"), ///添加元素Name
new XElement("Url","http://www.microsoft.com") ///添加元素Ur
)
);
///显示XML文件的内容
Response.Write(element);
///设置网页显示的形式为XML文件
Response.ContentType = "text/xml";
Response.End();
}
Result:
五、XNamespace类
XNamespace类表示XML文件中的一个XML命名空间。XML命名空间一般表示名称为“xmlns”的名称/值对。XNamespace类提供了4个属性获取与XML命名空间相关的值,如命名空间的URI、与XML URI相关的XNamespace对象等。XNamespace类的属性如表所示。
表 XNamespace类的属性
属 性 | 说 明 |
NamespaceName | 命名空间的URI。 |
Xml | 获取与XML URI对应的XNamespace对象。 |
Xmlns | 获取与xmlns URI对应的XNamespace对象 |
None | 获取不与命名空间对应的XNamespace对象。 |
Sample:
private void XNamespaceClass()
{ ///创建命名空间
XNamespace xns = "http://www.microsoft.com";
///创建一个XML元素
XElement element = new XElement("Advertisements",
new XElement("Ad",
new XAttribute("ID","1"), ///添加属性ID
new XElement("Name","w3c"), ///添加元素Name
new XElement("Url","http://www.w3c.com") ///添加元素Url
),
new XElement("Ad",
new XComment("This is a website."), ///添加注释
new XAttribute("ID","2"), ///添加属性ID
new XElement("Name","Microsoft"), ///添加元素Name
new XElement(xns + "Url","http://www.microsoft.com") ///添加包含命名空间的元素Url
)
);
///显示XML文件的内容
Response.Write(element);
///设置网页显示的形式为XML文件
Response.ContentType = "text/xml";
Response.End();
}
Result:
![](http://p.blog.csdn.net/images/p_blog_csdn_net/linqmail/11.5.jpg)
本文主要由 http://blog.csdn.net/linqmail的博客整理而来