技术开发 频道

在SQL Server中如何与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的选择的不同,生成对应表的记录就发生了变化。

0
相关文章