一.前言:
XML 是微软.Net 战略的一个重要组成部分,而且它可谓是 XML Web 服务的基石,所以掌
握.Net 框架下的 XML 技术自然显得非常重要了。本文将指导大家如何运用 C#语言完成.Net
框架下的 XML 文档的读写操作。首先,我会向大家介绍.Net 框架中与 XML 相关的命名空间
和其中的重要类。其次,我还会给出有关的实例以使读者更进一步的了解 XML 文档的读写
操作的具体方法。
二.XML 命名空间和相关类简介:
在深入进行.Net 框架下的 XML 文档的操作之前,我想很有必要向大家介绍.Net 框架中与
XML 技术有关的命名空间和其中一些重要的类。.Net 框架为我们提供了以下一些命名空间:
System.Xml 、 System.Xml.Schema 、 System.Xml.Serialization 、 System.Xml.Xpath 以 及
System.Xml.Xsl 来包容和 XML 操作相关的类。
System.Xml 命名空间包含了一些最重要的 XML 类,其中最主要的类是和 XML 文档的读写操
作相关的类。这些类中包括 4 个与读相关的类以及 2 个与写相关的类。它们分别是:
XmlReader 、 XmlTextReader 、 XmlValidatingReader 、 XmlNodeReader 、 XmlWriter 以 及
XmlTextWriter。本文将重点介绍这些类,因为它们是最基本也是最重要的类。
XmlReader 类是一个虚基类,它包含了读 XML 文档的方法和属性。该类中的 Read 方法是一
个基本的读 XML 文档的方法,它以流形式读取 XML 文档中的节点(Node)。另外,该类还
提供了 ReadString、ReadInnerXml、 ReadOuterXml 和 ReadStartElement 等更高级的读方法。
除 了 提 供 读 XML 文 档 的 方 法 外 , XmlReader 类 还 为 程 序 员 提 供 了 MoveToAttribute 、
MoveToFirstAttribute 、 MoveToContent 、 MoveToFirstContent 、 MoveToElement 以 及
MoveToNextAttribute 等具有导航功能的方法。在本文后面介绍的实例中,我们将运用到这
些方法。
XmlTextReader、XmlNodeReader 以及 XmlValidatingReader 等类是从 XmlReader 类继承过来的
子类。根据它们的名称,我们可以知道其作用分别是读取文本内容、读取节点和读取 XML
模式(Schemas)。
XmlWriter 类为程序员提供了许多写 XML 文档的方法,它是 XmlTextWriter 类的基类,我在
后面的实例中会给出相关的运用方法。
XmlNode 类是一个非常重要的类,它代表了 XML 文档中的某个节点。该节点可以是 XML 文
档的根节点,这样它就代表整个 XML 文档了。它是许多很有用的类的基类,这些类包括插
入节点的类、删除节点的类、替换节点的类以及在 XML 文档中完成导航功能的类。同时,
XmlNode 类还为程序员提供了获取双亲节点、子节点、最后一个子节点、节点名称以及节点
类型等的属性。它的三个最主要的子类包括: XmlDocument、XmlDataDocument 以及
XmlDocumentFragment。XmlDocument 类代表了一个 XML 文档,它提供了载入和保存 XML
文档的方法和属性。这些方法包括了 Load、LoadXml 和 Save 等。同时,它还提供了添加特
性(Attributes)、说明(Comments)、空间(Spaces)、元素(Elements)和新节点(New
Nodes)等 XML 项的功能。XmlDocumentFragment 类代表了一部分 XML 文档,它能被用来
添加到其他的 XML 文档中。 XmlDataDocument 类可以让程序员更好地完成和 ADO.NET 中的
数据集对象之间的互操作。
除 了 上 面 介 绍 的 System.Xml 命 名 空 间 中 的 类 外 , 该 命 名 空 间 还 包 括 了 XmlConvert 、
XmlLinkedNode 以及 XmlNodeList 等类,不过这些类不是本文介绍的重点,有兴趣的读者不
妨去参考相关文档资料。
System.Xml.Schema 命名空间中包含了和 XML 模式相关的类,这些类包括 XmlSchema、
XmlSchemaAll、XmlSchemaXPath 以及 XmlSchemaType 等类。
System.Xml.Serialization 命名空间中包含了和 XML 文档的序列化和反序列化操作相关的类,