XML的全称是Extensible Markup Language,中文名称为可扩展标记语言。XML语言在不断的应用中逐渐成熟和流行起来,C#中提供了对XML的支持。本章主要介绍XML的相关知识。
本章主要内容
& XML的基础知识
& C#中对XML的支持
& XmlDocument的使用
& XmlReader的使用
& XmlNode的使用
& 访问XML文档
& 使用XML文档
XML技术与HTML既有相似性,也有其自身的特殊性,对HTML语言比较熟悉的读者可以快速地浏览本章内容。本章将简单地介绍XML技术的由来和特点。
XML和HTML都来自于标准通用标记语言(Standard Generalized Markup Language,SGML)。标准通用标记语言早在Web发明之前就已经产生。从其命名可以知道,SGML是一种用标记来描述文档资料的通用语言。SGML包含了一系列的DTD(文档类型定义)。DTD中定义了标记的含义,因此SGML的语法是可以根据需要进行扩展的。SGML的内容十分复杂,不但不容易学,也不容易使用,在计算机上实现难度也非常大。鉴于这些因素,一些研究人员对SGML进行了精简,提出了HTML语言的概念。
HTML只使用了标准通用标记语言中的部分标记。在HTML中,固定了可以使用的标记个数,这样更便于其在计算机上实现,即HTML语法是不可扩展的。因此,HTML不需包含DTD。由于HTML语法的这种固定性,使得其易学易用,开发符合HTML语法要求的浏览器也比较方便。HTML语言的这种简单特性使其流行开来,走进了几乎所有的计算机中。
随着计算机技术的发展,Web应用越来越广泛,无论是开发人员还是普通用户都逐渐对HTML提出了更高的要求。HTML语言已经越来越不适合Web的发展。尽管HTML语言一直在进行不同形式的更新、改革,但始终难以满足日益增长的需求。另外一方面,随着计算机软硬件技术的发展,现在可以开发出远比当年更加复杂的Web浏览器,这也从另一方面促进了Web技术的发展,提出了新型Web页面语言的要求。
在Web语言的选取上曾经存在着部分争论,这些争论主要集中于是否选用SGML语言。但是由于SGML对于当前的Web页面技术仍然存在过于庞大,开发人员学习成本过高的问题,另外开发一个满足SGML语言全部要求的浏览器也过于复杂。因此,随着讨论的深入,逐渐倾向于采用XML语言作为新的Web语言,即SGML的子集。XML语言得到了Web标准化组织W3C的支持,因此其规范程度得到了保证,其普及程度相当高。
XML主要具有以下几个特点。
XML对SGML进行了有效的精简,选取了SGML的部分子集作为自身的语言。在对SGML的简化过程中,XML保留了SGML的丰富功能以及其SGML的可扩展特性,并充分考虑了HTML的简单特性,这是XML与HTML根本性的差别。XML还包括可扩展格式语言(Extensible Style Language,XSL)和可扩展链接语言(Extensible Linking Language,XLL),这些技术使XML的显示和解析更加方便快捷。
XML对SGML进行了精简,摈弃了SGML中不常用的部分。这不仅便于用户编写Web页面,同时也给开发人员实现新的XML浏览器降低了困难。
XML由Web标准化组织W3C正式批准,因此完全可用于Web和工具的开发。XML支持多种标准,包括文档对象模型标准、可扩展类型语言标准、可扩展链接语言标准和XML指针语言标准。使用XML可以在不同的计算机系统间交换信息,而且还可以跨越国界和不同文化交换信息。
XML支持文档内容的高度复用,开发人员可以开发和使用自定义的标签,也可以与其他开发人员共享,易于扩展。在XML中,可定义一组无限量的标准,因此可以有效地进行XML文件的扩展。
System.Xml命名空间中的XML类提供使用XML文档和数据的功能。XML类支持分析和编写XML文档,编辑内存中的XML数据、数据验证,以及XSLT转换等。
.NET Framework 2.0中新增了部分功能,有.NET Framework 1.1经验的读者可以迅速地阅读本小节以获得相关的知识。.NET Framework 2.0版中新增了下列System.Xml功能。
· 新的XML数据处理模型:2.0版包含新的内存XML数据处理模型。XPathNavigator类已更新,增加了编辑功能,可以用于修改存储在XmlDocument类中的数据。
· 新的XSLT处理器:XSLT结构在.NET Framework 2.0版中重新设计。XslCompiled- Transform类是新的XSLT处理器。XslCompiledTransform类包括许多性能上的改进,比已过时的XslTransform类速度快得多。
· 类型支持:XmlReader、XmlWriter和XPathNavigator类已更新,包含类型支持。这些类上的新方法可以将节点值作为公共语言运行库对象返回。
· 用于创建XmlReader和XmlWriter对象的新模型:在创建XmlReader和XmlWriter对象时,建议使用XmlReader和XmlWriter类上的静态Create方法。使用Create方法可以指定希望XmlReader或XmlWriter对象支持的功能集。
· 架构推断:使用XmlSchemaInference类可以从XML文档的结构推断XML架构定义语言(XSD)架构。