LINQ to XML的编程基础

一、LINQ to XML 编程基础
1、LINQ to XML类
System.Xml.Linq命名空间含有19个类,下表列出了它们的名称及其描述:

 

描述

 

XAttribute

 

表示一个 XML 属性

 

XCData

 

表示一个 CDATA 文本节点

 

XComment

 

表示一个 XML 注释

 

XContainer

 

适用于可能具有子节点的所有节点的抽象基类

 

XDeclaration

 

表示一个 XML 声明

 

XDocument

 

表示一个 XML 文档

 

XDocumentType

 

表示一个 XML 文档类型定义 (DTD)

 

XElement

 

表示一个 XML 元素

 

XName

 

表示一个XML元素或属性的名称

 

XNamespace

 

表示一个XML的命名空间

 

XNode

 

一个抽象类,它表示 XML 树的节点

 

XNodeDocumentOrderComparer

 

提供用于比较节点的文档顺序的功能

 

XNodeEqualityComparer

 

提供用于比较节点的值是否相等的功能

 

XObject

 

XNode 和 XAttribute 的抽象基类

 

XObjectChange

 

XObject引发事件时的事件类型

 

XObjectChangeEventArgs

 

为 Changing 和 Changed 事件提供数据

 

XProcessingInstruction

 

表示一个 XML 处理指令

 

XText

 

表示一个文本节点

 
以下的代码演示了如何使用LINQ to XML来快速创建一个xml:

复制代码 代码如下:


public static void CreateDocument()
{
XDocument xdoc = new XDocument
(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("Root","root")
);
xdoc.Save(path);
}


运行该示例将会得到一个xml文件,其内容为:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root>root</Root>
可以看出微软在LINQ上投入了很大的精力,使我们在编程时感觉到很舒服。下面将详细介绍处理XML时使用最多的三个类:XElement、XAttribute和XDocument。如果掌握了这些类,使用LINQ to XML时将会感到很顺手。
2、XElement类
XElement 类是 LINQ to XML 中的基础类之一。 它表示一个 XML 元素。 可以使用该类创建元素;更改元素内容;添加、更改或删除子元素;向元素中添加属性;或以文本格式序列化元素内容。 还可以与 System.Xml 中的其他类(例如 XmlReader、XmlWriter 和 XslCompiledTransform)进行互操作。
使用LINQ to XML创建xml文档有很多种方式,具体使用哪种方法要根据实际需要。而创建xml文档最简单、最常见的方式是使用XElement类。以下的代码演示了如何使用XElement类创建一个xml文档:

复制代码 代码如下:


public static void CreateCategories()
{
XElement root = new XElement("Categories",
new XElement("Category",
new XElement("CategoryID", Guid.NewGuid()),
new XElement("CategoryName", "Beverages")
),
new XElement("Category",
new XElement("CategoryID", Guid.NewGuid()),
new XElement("CategoryName", "Condiments")
),
new XElement("Category",
new XElement("CategoryID", Guid.NewGuid()),
new XElement("CategoryName", "Confections")
)
);
root.Save(path);
}


运行该示例将会得到一个xml文件,其内容为:

复制代码 代码如下:


<?xml version="1.0" encoding="utf-8"?>
<Categories>
<Category>
<CategoryID>57485174-46fc-4e8c-8d98-d25b53d504a1</CategoryID>
<CategoryName>Beverages</CategoryName>
</Category>
<Category>
<CategoryID>1474dde1-8014-48f7-b093-b47ca5d5b770</CategoryID>
<CategoryName>Condiments</CategoryName>
</Category>
<Category>
<CategoryID>364224e0-e002-4939-90fc-0fd93e0cf35b</CategoryID>
<CategoryName>Confections</CategoryName>
</Category>
</Categories>


LINQ to XML的强大之处还在于它可以使用LINQ to SQL或者LINQ to Object获取数据源,然后填充到xml树。以下的示例从Northwind数据库中读取Categories、Products表中的数据来创建包含产品类别,以及每个类别下所有产品的xml文件:

复制代码 代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjjxpg.html