第27章 XML处理
XML(eXtensible Markup Language,可扩展标记语言)是现今最为流行的技术之一,它广泛应用在编程的方方面面(例如.NET应用程序中常用的machine.config、app.config以及web.config等)。自然,.NET Framework也提供了强大的XML处理能力,这大大简化了我们在处理XML时的工作。本章主要讲述XML技术在C#中的应用,主要包括:
❑System.Xml命名空间,它包含了处理XML所需要的类;
❑XML相关的技术,如XPath、XSL、DOM等;
❑使用LINQ to XML处理XML。
尽管,自从.NET Framework 3.5以来,新增的LINQ to XML提供了另一种访问和处理XML的途径,但并非就没有必要了解基本的XML处理知识(诸如XPath)。因为技术总在进步之中,经典的基础知识往往是一些最新技术的基石,只有掌握了基础知识,才能更好地使用最新的技术。
在阅读本章之前,假定读者有一些XML的基本知识(如果没有,建议读者在阅读本章之前先进行必要的了解)。
27.1 System.Xml命名空间
System.Xml命名空间包含了读写XML有关的类,在该命名空间中还有另外9个命名空间,如下所示。
❑System.Xml.Linq命名空间:包含了LINQ to XML的类;
❑System.Xml.Resolvers命名空间:为使用DTD或XML流填充缓存提供支持;
❑System.Xml.Schema命名空间:为XML架构定义语言(XSD)架构提供基于标准的支持;
❑System.Xml.Serialization命名空间:包含用于将对象序列化为XML格式文档或流的类;
❑System.Xml.Serialization.Advanced命名空间:包含一些类,这些类允许您自定义用Web服务描述语言(WSDL)文档生成的代码;
❑System.Xml.Serialization.Configuration命名空间:包含用于读取应用程序配置文件中的<system.xml.serialization>元素节下所含的值的类。此命名空间中的类可由序列化基础结构用于处理配置元素,但不能直接使用;
❑System.Xml.XPath命名空间:包含的类用于定义光标模型,该模型可将XML信息项作为XQuery 1.0和XPath 2.0数据模型的实例进行导航和编辑;
❑System.Xml.Xsl命名空间:为“可扩展样式表转换”(XSLT)转换提供支持;
❑System.Xml.Xsl.Runtime命名空间:支持.NET Framework基础结构,不应直接从代码中使用。
由于篇幅关系,本章只重点讨论System.Xml命名空间,其他命名空间不做详细介绍。在System.Xml命名空间中我们重点讨论如下几个类。
❑XmlAttribute:表示一个属性;
❑XmlDocument:表示XML文档;
❑XmlElement:表示一个元素;
❑XmlNode:表示XML文档中的单个节点;
❑XmlReader:提供对XML数据进行快速、非缓存、只进[1]访问的读取器;
❑XmlText:表示元素或属性的文本内容;
❑XmlTextReader:提供对XML数据进行快速、非缓存、只进访问的读取器;
❑XmlTextWriter:提供快速、非缓存、只进方法的编写器,该方法生成包含XML数据的流或文件;
❑XmlWriter:一个编写器,该编写器提供一种快速、非缓存和只进的方式来生成包含XML数据的流或文件。
[1]只进:意味着它是顺序访问,旦不能多次对同一节点进行操作,并且没有祖先、父、子、兄弟节点的概念。