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的博客整理而来

 

 

 

posted @ 2011-05-08 01:55  顾思行  阅读(439)  评论(0编辑  收藏  举报