首页 > 开发 > .Net > 正文

使用.NET存储XML数据的方法

2020-04-24 21:57:34
字体:
来源:转载
供稿:网友
SQL Server 2000和XML for SQL Server 2000 Web版本(SQLXML)提供了三种存储XML数据的途径:XML Bulk Load和Updategrams,这两种客户端技术使用带有注解的大纲指定XML文档内容和数据库的表之间的映射;OpenXML是一种服务器端技术,它允许你在XML文档上定义关系视图,有了OpenXML的关系视图,你就能使用T-SQL代码查询XML文档中的数据并把结果存储在你的SQL Server数据库中。 
  这三种技术中的每一种都是为特定的目的设计的。XML Bulk Load把来自很大的XML文档的数据存储在SQL Server中;Updategrams执行SQL Server数据的优化更新(优化更新是没有锁(lock)的更新,在这种更新中系统检测是否有其它用户在原来读取数据后改变了它);OpenXML提供了人们熟悉的XML数据关系访问方法。 

  在这三种技术中,OpenXML是最灵活的,因为它提供了一个编程模型(T-SQL),在把XML数据存储在SQL Server数据库之前,你可以使用这种编程模型在XML数据上编写业务规则或执行计算逻辑。但是,由于OpenXML是一种基于服务器的技术,如果你频繁的使用它或者有大量的文档,它会降低SQL Server的性能。不过,如果你采用了微软.net框架组件,你就可以使用ADO.NET的数据集绕开这些性能和可伸缩性方面的限制,ADO.NET数据集赋予你一个强大的技术--为把XML数据存储在SQL Server包含了一个完整的编程模型。 

  数据集、数据表和XML映射 

  你可以使用数据集简单地从SQL Server中生成XML查询结果。通过提供一种可以在客户端和中间层计算机上使用的关系数据缓存(cache),数据集能够载入和维护多种数据源(包括SQL Server、其它的关系型数据库和XML)中的数据。 

  当你从XML文档中载入一个数据集的时候,该数据集必须把存储在层次XML表现(representation)中的数据映射成数据集的关系表现。例如,如果你的XML文档包含一个Order元素列表,而它又有一个作为子元素的嵌套的LineItem元素,那么通常这个文档被映射成关系表现中的Orders和LineItems数据表。这种映射的目的与OpenXML使用Xpath查询构造XML文档上的关系视图的方法的目的是一样的。但是与使用Xpath规范不同,数据集有自己的映射数据的方式。 

  数据集使用XML大纲定义(XSD)大纲把数据从XML文档映射到数据集的关系数据缓存中。数据集为你提供了指定映射XML数据的大纲的两种方法。首先,你可以引用一个定义了XML文档中使用的元素,属性和关系的XSD大纲。另一种方法是,你可以直接从文档的结构中推理大纲。换句话说,数据集可以通过检查XML文档的结构和内容建立大纲。 

  当你引用XSD大纲的时候,数据集使用这个大纲中定义的元素、属性与元素之间的关系来构造关系数据缓存中的数据表、数据列和数据关系,你可以使用这个数据缓存存储被映射的XML数据。我谈到关系数据缓存中的结构或大纲的时候,一般把它称为数据缓存的形式。当数据集处理大纲的时候,它会应用一组规则,这种规则与映射大纲中没有指定注解时Updategrams 和XML Bulk Load使用的默认映射规则相似,数据集使用这种规则建立数据集用于存储被映射的XML数据的表。数据集的映射规则概述如下: 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表