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://blog.csdn.net/linqmail的博客整理而来


浙公网安备 33010602011771号