[ 登录 ][ 注册 ] 天极传媒: 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
您现在的位置: IT专家网 > 数据库子站 > 数据库技巧

在SQL Server中如何与XML交互

作者: 松晨,  出处:IT专家网, 责任编辑: 王晓晨, 
2008-08-13 10:53
  在SQL Server 2005中,XML已经做为一种新型的类型存储在数据库中。借助于基于XML模式的强类型化支持和基于服务器端的XML数据校验功能,开发者就可以对存储的XML文档进行轻松地远程修改。

  输出的结果如下: 

<row>
  <ID>1</ID>
  <User_Name>admin</User_Name>
  <User_pwd>admin888</User_pwd>
</row>
<row>
  <ID>2</ID>
  <User_Name>user</User_Name>
  <User_pwd>user</User_pwd>
</row>

  AUTO模式:

  AUTO 模式可确定基于查询返回的 XML 的形状。在确定嵌套元素的方式时,AUTO 模式试探法将比较相邻行中的列值。在FROM 子句内,每个在 SELECT 子句中至少有一列被列出的表都表示为一个 XML 元素。如果在 FOR XML 子句中指定了可选的 ELEMENTS 选项,SELECT 子句中列出的列将映射到属性或子元素。

  同样来看看两种实现的方式:

  语句一:

SELECT ID, User_Name, User_pwd FROM Tb_User FOR XML AUTO

  输出的结果如下:

<Tb_User ID="1" User_Name="admin" User_pwd="admin888" />
<Tb_User ID="2" User_Name="user" User_pwd="user" />
  

  语句二:

SELECT ID, User_Name, User_pwd FROM Tb_User FOR XML AUTO,ELEMENTS

  输出的结果如下: 

<Tb_User>
  <ID>1</ID>
  <User_Name>admin</User_Name>
  <User_pwd>admin888</User_pwd>
</Tb_User>
<Tb_User>
  <ID>2</ID>
  <User_Name>user</User_Name>
  <User_pwd>user</User_pwd>
</Tb_User>

  EXPLICIT模式:

  在 EXPLICIT 模式中,查询书写器控制由执行查询所返回的 XML 文档的形式。必须以特定的方式编写查询,将有关预期嵌套的附加信息显式指定为查询的一部分。当指定 EXPLICIT 模式时,必须负责确保生成的 XML 符合语法规则并且有效。

  EXPLICIT 模式会将由查询执行生成的行集转换为 XML 文档。为使 EXPLICIT 模式生成 XML 文档,行集必须具有特定的格式。这需要编写 SELECT 查询以生成具有特定格式的行集(通用表),以便处理逻辑随后可以生成所需的 XML。

  首先,查询必须生成下列两个元数据列:

  第一列必须提供当前元素的标记号(整数类型),并且列名必须是 Tag。查询必须为从行集构造的每个元素提供唯一标记号。

  第二列必须提供父元素的标记号,并且此列的列名必须是 Parent。这样,Tag 和 Parent 列将提供层次结构信息。

  前两列是 Tag 和 Parent,它们是元数据列。这些值确定层次结构。查询必须以特定的方式提供列名,Parent 列中的 0 或 NULL 表明相应的元素没有父级。

  在构造 XML 的过程中,处理逻辑为每行选择一组列,然后构造一个元素。

  现在来看看下面的两个语句:

  语句一:

SELECT 1    as Tag,
       NULL as Parent,
       User_Name as [TbUser!1!UserName],
       User_pwd       as [TbUser!2!UserPwd]
FROM   Tb_User
FOR XML EXPLICIT

  输出的结果如下:

<TbUser UserName="admin" />
<TbUser UserName="user" />
  

  语句二:

SELECT 2    as Tag,
       NULL as Parent,
       User_Name as [TbUser!1!UserName],
       User_pwd       as [TbUser!2!UserPwd]
FROM   Tb_User
FOR XML EXPLICIT

  输出的结果如下:

<TbUser UserPwd="admin888" />
<TbUser UserPwd="user" /> 

      在此示例中,列TbUser!1!UserName和TbUser!2!UserPwd 形成一组,然后该组用于构造元素。对于第一行中的 Tag 列值 1和对于 Tag 列值为 2 的行,根据Tag的选择的不同,生成对应表的记录就发生了变化。

共4页。 9 1 2 3 4 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。

邮件订阅