一、LINQ to XML 编程基础 类 描述 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 表示一个文本节点
1、LINQ to XML类
System.Xml.Linq命名空间含有19个类,下表列出了它们的名称及其描述:
以下的代码演示了如何使用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文件:
复制代码 代码如下: