日期:2013-02-02  浏览次数:20635 次

  本文引见 Visual Studio 2005/SQL Server 2005 环境中用于处理 XML 数据的三个选项,包括使用方案以及指点用户在各选项之间进行选择的指南。

  一、System.Xml、SQLXML 和 XML 数据类型简介

  本节简要引见 Microsoft SQL Server 2000 中提供的 XML 支持的发展历史,并概要引见 Microsoft Visual Studio 2005/SQL Server 2005 环境中提供的用于处理 XML 和关系数据的三个选项。这三个选项是:1) System.Xml 命名空间中的类,2) SQLXML 类,3) SQL Server 2005 中提供的 XML 数据类型。

  XML 支持最早添加到 Microsoft SQL Server 2000 中,为用户提供以下功用:

  •

  将关系数据作为 XML 地下

  •

  将 XML 文档拆分到行集合

  •

  通过使用 XML 数据精简 (XDR) 方案,将 XML 方案映射到数据库方案,从而创建 XML 视图

  •

  使用 XPath 在 XML 视图上创建查询

  •

  在 SQL Server 中通过 HTTP 地下数据

  此支持在 SQLXML Web 的后续版本中得到了进一步加强。加强功用包括:

  •

  更新程序和 XML 海量加载可以保留对 XML 视图的更改

  •

  支持带批注的 XML 方案定义言语 (XSD),以便描述映射(仍然支持 XDR,但不建议使用)

  •

  客户端的 FOR XML

  •

  SQLXML 托管类

  •

  支持 Web 服务

  Microsoft .NET Framework 1.0 对读取、写入和处理 XML 文档提供了广泛的支持。这种支持在 .NET Framework 2.0 中得到了进一步加强,提高了各种 XML 类的功用和可用性。.NET Framework 在 System.Xml 命名空间中提供的新类可用于在 XML 数据与关系数据之间进行互相映射。

  SQLXML 是一组使 SQL Server 数据库中的关系数据能够与 XML 无缝集成的库和技术。它是一个两头层组件,不包括由 FOR XML 和 OPENXML 提供的服务器端 XML 支持。SQLXML 提供了一个方案驱动的映射方法,能够从关系源数据生成 XML 并将表示关系信息的 XML 加载回关系表中。SQLXML 类对 SQL Server 2000(及更高版本)的数据库提供了 XML 支持。

  Microsoft SQL Server 2005 以 XML 数据类型的方式添加了内置的 XML 支持。XML 数据可以存储在 XML 数据类型列内部。另外,通过将一个 XML 方案集合与此 XML 数据类型列关联,还可以对其进行进一步的限制。存储在 XML 数据类型列中的 XML 值可以借助 XQuery 和 XML 数据修正言语 (DML) 进行处理。可以在 XML 数据上建立索引,以加强查询功用。此外,FOR XML 和 OPENXML 也已得到加强,能够支持新的 XML 数据类型。

  SQL Server 2005 中引入的存储和处理 XML 数据的新功用与 SQL Server 晚期版本中提供的 XML 功用结合在一同,为开发人员提供了多种在 XML 使用程序中存储和处理 XML 数据的方法。由于使用 SQL Server 2005 提供的方法,有多种方法可以生成 XML 使用程序,因此,了解各种不同技术的方案,以及如何在各种技术之间进行权衡和配合对于作出正确的选择是至关重要的。本文提供了如何选择适当的方法,使用 SQL Server 2005 开发 XML 使用程序的指南。

  二、XML 使用方案

  XML 的使用领域可大致划分为:

  •

  用于商业集成的 XML:商业集成,也称为企业使用集成 (EAI),包括 A2A(使用程序对使用程序)、B2B(企业对企业)以及 B2C(企业对用户)使用程序。运转在不同系统上的使用程序使用基于 XML 的音讯互相通讯。

  •

  用于内容管理的 XML:使用基于 XML 的内容管理系统,用户可以存储、检索、修正和查询 XML 文档。这些系统以其原有格式存储 XML 文档。

  下面引见符合上述分类的几种方案。这些方案的处理方案将在以下几节中给出,并且会详细引见 SQL Server 2005/Visual Studio 2005 环境中提供的各种 XML 选项的处理情况。

  方案 1:保险理赔

  一家汽车保险公司在 Internet 上提供服务,允许其投保人或代理通过公司的网站进入保险理赔。理赔将由位于公司总部的地方系统进行处理。处理完毕后,系统会将与该理赔相关的信息以指定的 XML 格式存储起来。系统中必须保留这些 XML 文档的精确副本,以便用于法律用途。此方案展现了 XML 在内容管理中的使用。

  方案 2:汽车制造商与零件供应商之间的数据交换 I

  一家汽车制造商与多家零件供应商进行交互,以便获得公司所需的零件。通常,该制造商要接收供应商的发票。然后,将与发票相关的数据手动输入到老式的发票处理系统中。发票处理系统以关系格式存储数据。而如今,该制造商希望将发票数据自动输入到老式的发票处理系统中。此方案是 XML 用于商业集成的示例。

  方案 3:汽车制造商与零件供应商之间的数据交换 II

  此方案包含一家与多家零件供应商进行交互的汽车制造商,如前一方案中所述。该制造商目前使用的系统不能为供应商提供查询发票形状或者从制造商获得付款说明的副本的功用。目前,供应商只能通过电话获得这些信息。该汽车制造商需求通过 Web 地下这些信息,以使供应商能够自动执行这些任务。此方案展现了 XML 在商业集成中的使用。

  方案 4:内容管理系统

  某公司通过 Web、书籍和 CD-ROM 等多种渠道向其客户提供医学、法律和技术等领域的信息。该公司要建立一套内容管理系统,以协助其在较短的时间内向客户提供高质量的内容。此方案展现了 XML 在内容管理中的使用。

  方案 5:客户调查

  某公司在 Internet 上提供机票预订业务,要对每个季节进行调查,以确定当前季节最受客户喜爱的旅游地点。每个季节所用的调查表均不同,而且将来调查表也可能改变。该公司将对调查信息进行分析,并依据分析结果设计出满足大多数客户要求的旅游套餐。此方案可看作 XML 在内容管理中的使用。

  三、.NET Framework 中的 XML 类

  Microsoft .NET Framework 对开发基于 XML 的产品提供了杰出的支持。在 .NET Framework 中,XmlTextReader、XmlTextWriter、XmlDocument 和 XmlValidatingReader 等核心类可以在 System.Xml 命名空间中获得,该命名空间是所有 XML 类的根命名空间。使用这些核心类,用户可以使用基于数据流和基于 DOM(基于文档对象模型)的两种浏览/访问模型来读取、写入和验证 XML 文档。System.Xml 命名空间包含以下子命名空间:

  •

  System.Xml.Schema - 包含用于处理 XML 方案定义言语 (XSD) 方案的类。

  •

  System.Xml.Serialization - 提供将对象序列化为 XML 格式的文档或数据流的类。

  •

  System.Xml.XPath - 包括使用 XPath 表达式浏览 XML 文档的类。

  •

  System.Xml.Xsl - 具有用于执行可扩展款式表转换 (XSLT) 的类。

  System.Xml 命名空间的加强功用

  在 Visual Studio 2005 中,新类(如 XsltCommand)和对现有 XML 类(如 XmlDocument)的加强可用于对 XML 数据进行各种操作,包括修正 XML 文档、使用 XSL 转换等。

  Visual Studio 2005 中与 System.Xml 命名空间中的 XML 类相关的一些加强功用如下:

  •

  XmlDocument 类添加了 XML 方案验证支持。

  •

  XmlReader 和 XmlWri