如何使用SQL Server 2000中的XML功能(2)

http://developer.51cto.com  2007-02-25 09:30  晓杜编译  IT168  我要评论(0)
  • 摘要:在本文中我们将讨论如何通过T-SQL的FOR XML子句从SQL Server返回XML。本文将通过几个例子来介绍返回XML数据和架构信息的几种不同方式,还将介绍将XML转换成更令人满意的格式的方法。然后讨论OPENXML,以及将XML文档联接到数据库表和使用WriteXml和GetXml方法从数据集提取XML的方法。
  • 标签:SQL Server  XML

请注意,这些数据不以父子层次结构显示。若想让数据显示为包含一系列相关<Orders>元素的一系列<Customers>元素,则可使用FOR XML AUTO子句(父子嵌套方法取决于成组聚集的父行)。CustomerID为ALFKI 时的XML结果如下:

<Customers CustomerID="ALFKI" CompanyName="Alfreds Futterkiste">
<Orders OrderID="10643" OrderDate="08/25/1997" />
<Orders OrderID="10692" OrderDate="10/03/1997" />
<Orders OrderID="10702" OrderDate="10/13/1997" />
<Orders OrderID="10835" OrderDate="01/15/1998" />
<Orders OrderID="10952" OrderDate="03/16/1998" />
<Orders OrderID="11011" OrderDate="04/09/1998" />
</Customers>

该XML的可读性大大提高,因为它使用表名来作为元素名。它所包含的数据也比较少,因为它不重复每个定单元素的CustomerID和CompanyName属性,而FOR XML RAW例子则不然。

如果您更喜欢将列值表示为元素而不是属性,则您就会很幸运。通过在FOR XML子句中指定ELEMENTS选项,所有列值都将成为XML中的元素。有时百闻不如一见,因此本文在图 3中给出了当ELEMENTS条件适用时前面查询的输出。(为了简便起见,给出的XML示例仅包含CustomerID ALFKI的XML。这些查询所生成的实际XML会包含所有客户及其定单的XML。)使用ELEMENTS选项的查询如下:

SELECT   Customers.CustomerID,
CompanyName,
OrderID,
CONVERT(VARCHAR(10), OrderDate, 101) AS OrderDate
FROM     Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID
ORDER BY Customers.CustomerID
FOR XML AUTO, ELEMENTS

<Customers>
<CustomerID>ALFKI</CustomerID>
<CompanyName>Alfreds Futterkiste</CompanyName>
<Orders>
<OrderID>10643</OrderID>
<OrderDate>08/25/1997</OrderDate>
</Orders>
<Orders>
<OrderID>10692</OrderID>
<OrderDate>10/03/1997</OrderDate>
</Orders>
<Orders>
<OrderID>10702</OrderID>
<OrderDate>10/13/1997</OrderDate>
</Orders>
<Orders>
<OrderID>10835</OrderID>
<OrderDate>01/15/1998</OrderDate>
</Orders>
<Orders>
<OrderID>10952</OrderID>
<OrderDate>03/16/1998</OrderDate>
</Orders>
<Orders>
<OrderID>11011</OrderID>
<OrderDate>04/09/1998</OrderDate>
</Orders>
</Customers>

图 3 使用FOR XML AUTO, ELEMENTS

该XML的可读性大大提高,因为它使用表名来作为元素名。它所包含的数据也比较少,因为它不重复每个定单元素的CustomerID和CompanyName属性,而FOR XML RAW例子则不然。    如果您更喜欢将列值表示为元素而不是属性,则您就会很幸运。通过在FOR XML子句中指定ELEMENTS选项,所有列值都将成为XML中的元素。有时百闻不如一见,因此本文在图 3中给出了当ELEMENTS条件适用时前面查询的输出。(为了简便起见,给出的XML示例仅包含CustomerID ALFKI的XML。这些查询所生成的实际XML会包含所有客户及其定单的XML。)使用ELEMENTS选项的查询如下:

该XML的可读性大大提高,因为它使用表名来作为元素名。它所包含的数据也比较少,因为它不重复每个定单元素的CustomerID和CompanyName属性,而FOR XML RAW例子则不然。    如果您更喜欢将列值表示为元素而不是属性,则您就会很幸运。通过在FOR XML子句中指定ELEMENTS选项,所有列值都将成为XML中的元素。有时百闻不如一见,因此本文在图 3中给出了当ELEMENTS条件适用时前面查询的输出。(为了简便起见,给出的XML示例仅包含CustomerID ALFKI的XML。这些查询所生成的实际XML会包含所有客户及其定单的XML。)使用ELEMENTS选项的查询如下:   

该XML的可读性大大提高,因为它使用表名来作为元素名。它所包含的数据也比较少,因为它不重复每个定单元素的CustomerID和CompanyName属性,而FOR XML RAW例子则不然。     如果您更喜欢将列值表示为元素而不是属性,则您就会很幸运。通过在FOR XML子句中指定ELEMENTS选项,所有列值都将成为XML中的元素。有时百闻不如一见,因此本文在图 3中给出了当ELEMENTS条件适用时前面查询的输出。(为了简便起见,给出的XML示例仅包含CustomerID ALFKI的XML。这些查询所生成的实际XML会包含所有客户及其定单的XML。)使用ELEMENTS选项的查询如下:   


共5页: 上一页 [1] 2 [3] [4] [5] 下一页
【内容导航】
深入SQL Server 2008
文档格式标准开战 OOXML成国际标准
XML可扩展标识语言详解
SQL Server 2008/2005全解
SQL Server入门到精通
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有