XML技术 (一)

** 一、 XML ** ** 简介 **

提起 XML(Extensible Markup Language 可扩展标记语言 ) ,相信业内人士都不会陌生,作为一种计算机技术出现不过是短短几年的事情,以其简便性而颇得人心。

我们来看一个简单的例子:

 1<books>
 2<book category="”reference”">
 3<author>Nige Ress</author>
 4<title>Sayings of the Century</title>
 5</book>
 6<book category="”fiction”">
 7<author>Evelyn Waugh</author>
 8<title>Sword of Honour</title>
 9</book>
10</books>

从上图的数据中,我们可以看到,这样简单的几行数据,清晰的描述了两本书的信息,包括书的种类,作者以及标题等信息。由于 XML 可以理解为一种格式化的文本,因此,对 XML 而言,是没有操作系统的概念的,只要支持文本处理的机器,就可以从 XML 中获取所需的数据,而且,与一般文本文件不同的是, XML 本身具有一定的数据结构,借助读取 XML 格式文档的技术(例如传统的 SAX ( Simple API for XML ) , 和 DOM(Document Object Model) 解析器),包括后面要介绍的在 .NET 中对 XML 的支持,可以方便快捷的处理 XML 中的数据。

XML 本身没有太多的语法要求,只要满足标记一一对应,不嵌套使用就好。另外,为了满足一些对数据本身的完整性和安全性的要求,可以使用一些相关的技术例如 DTD( Document Type Definition 文档对象模型 ),XDR(XML Data Reduced) 以及 XSD(XML 模式定义语言 ) 可以对 XML 提供有效的验证,从而保证了 XML 中数据的完整性。

** 二、 .NET ** ** 中的 XML 技术 **

.NET 作为微软公司推出的新一代开发模式,对 XML 提供了极其完善的支持。可以这样说, .NET 不关提供了对 XML 的支持,其核心也和 XML 紧密结合。我们可以从下面几个方面来看看:

1、 传统解析方式

同其他的各项编程语言一样, .NET 提供了一套十分完善的类库,来支持在 .NET 中使用各种允许的语言(包括 C#,VB.net, 托管 C++ 等),来编写对 XML 进行读写的程式。

注:这些类位于 System.Xml 命名空间下,支持以 SAX 模式和 DOM 模式来解析 XML 文档。

2、 .NET ** 中的高级解析方式 **

除了,支持传统的解析方式外, .NET 中还支持一些以 .NET 中特有的技术来解析 XML 数据,比如 ADO.NET 中广泛使用的 DataSet( 数据集在断开缓存中存储数据。数据集的结构类似于关系数据库的结构;它公开表、行和列的分层对象模型。另外,它包含为数据集定义的约束和关系。可以把它理解为数据库在内存中的表现形式 ) ,就提供了 ReadXml (将 XML 架构和数据读入 ** DataSet ** )和 GetXml (返回存储在 ** DataSet ** 中的数据的 XML 表示形式。)以及 WriteXml (从 ** DataSet ** 写 XML 数据,还可以选择写架构。)等一些解析 XML 的方法。

通过使用这些方法,可以有效的在 .NET 中与 XML 数据进行交互。

3、 XML ** 验证 **

正如前面提到的,现在对 XML 的验证,主要有 3 种方式: DTD,XDR 模式和 XSD 模式。而在 .NET 中提供了对这 3 种方式的支持,其中 XSD ( W3C 制定的 XML 模式定义语言)模式, .NET Framework 提供了广泛的支持。

当然,这并不表示 DTD 和 XDR 模式就与 .NET Framework 格格不入,在 VS.NET 中包含一些工具,这些工具可以帮助我们将 XDR 模式转换为 XSD 格式。

由于 XSD 标准很长而且很复杂,作为一个在 .NET Framework 中广泛支持的标准, VS.NET 为我们提供了几种个容易创建一个 XSD 模式的工具,我们可以任选一种创建所需 XSD 模式:

1) 使用 XML Designer 从头 创建时间;

2) 使用 Server Exploreer 从一个数据库中创建;

3) 使用 XSD Generator 从一个 XML 文档或 XDR 模式中创建;

此外, XSD 模式,本身也遵循 XML 的语法,因此我们也可以使用 Microsoft 的 SOM(Schema Object Model 模式对象模型 ) 在内存中对 SOM 对象树修改,并将此模式写入磁盘文件,以达到动态修改 XSD 模式的目的。

4、 XML ** 串行化 **

当然 XML 的作用不止如此,当创建一个分布式系统时,一个必须解决的问题时如何获得从系统的一个部分到另一个部分的对象。

为了满足这项需求, .NET Framework 实现了一种基于 XML 的串行化机制,您可以将一个对象串行化为 XML 格式,从而它的所有公共域和属性都将以 XML 的格式写入。然后您就可以将这个 XML 数据发送到您希望的任何地方,因为 XML 是一个开放的、等到广泛支持的标准。

同时,在接收端应用程序可以并行化该 XML 数据,从而可以在内存中重建该对象。

5、 .NET ** 中的配置 **

上面介绍了在 .NET Framework 中使用 XML 的一些常规技术,其实 .NET 本身也是和 XML 息息相关的,在 .NET Framework 中广泛的使用了 XML 来进行应用程序的配置。

主要有下面 3 种:

1) 应用程序配置文件

这类配置文件表示专门针对一个单独的应用程序的设置,绑定到程序集上的信息,远程对象的配置等。例如某个应用程序是一个标准的 .exe 应用程序,则该应用程序的文件名再加上一个 .config 扩展名。

对于 ASP.NET 的 Web 应用程序,培植的详细信息将存储在一个名为 web.config 的文件中。一个服务器可以有多个 web.config 文件,每一个 Web.config 文件将存在于应用程序的根目录或其子目录下。

2) 机器或服务器配置文件

这是一个名为 machine.config 的 XML 文件,用于进行系统范围的配置。

3) 安全配置文件

这类配置文件被 Framework 安全系统用来判定一个程序集接收到什么样的许可。共有 3 种可配置策略级别:企业级、机器级和拥护级。

要读取或修改这些配置信息可以使用任何标准文本编辑器、 XML 分析器,也可以使用 .NET Framework 中提供的一组用户读取配置文件和扩展配置文件的 API 。

** 三、 XML ** ** 技术的将来 **

虽然 XML 技术的使用已经使于很多领域,但 XML 技术的优越性决定其必然可以使用于更多的领域中,例如在下一代的数据库技术中,就会出现 XML 数据库,这种数据库不同于现有的关系性数据库,可以允许同一类的数据中包含的信息量不同。

比如,一个图书库的数据资料,假设有 2 本书,我希望能保存书名、作者,出版社,价格以及页数信息,按照现有的关系型数据库,可能的存储方式为:


|

Name

|

Author

|

Publish

|

Price

|

pageNo

---|---|---|---|---|---

** 1 **

|

.Net Xml 高级编程

|

Wrox

|

清华大学出版社

|

75

|

676

** 2 **

|

XML 高级编程

|

Wrox

|

机械工业出版社

|

95

|

944

如果其中一本我希望能保存书名、作者,出版社,价格以及页数信息,而另外一本我只希望保存书名、作者以及价格信息。

按照现有的关系型数据库,可能的存储方式为:


<TD style="BORDER-RIGHT: #ece9d8; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #999999; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 89.55pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; HEIGHT: 7.5pt; mso-border-top-alt: sol

Published At
Categories with Web编程
Tagged with
comments powered by Disqus