一、以记录为核心
(1)path模式
select *
from 表名
for xml path
执行结果
<row>
<TreeNode_ID>2</TreeNode_ID>
<TreeNode_Name>1</TreeNode_Name>
</row>
(2)raw模式
select *
from 表名
for xml raw
执行结果
<row TreeNode_ID="2" TreeNode_Name="1" />
(3)auto模式
select *
from 表名
for xml auto
执行结果
<td_Tree_Node TreeNode_ID="2" TreeNode_Name="1" />
二、以元素为核心
(1)path模式
select *
from 表名
for xml path,elements
执行结果
<row>
<TreeNode_ID>2</TreeNode_ID>
<TreeNode_Name>1</TreeNode_Name>
</row>
(2)Raw 模式
select *
from 表名
for xml raw,elements
执行结果
<row>
<TreeNode_ID>2</TreeNode_ID>
<TreeNode_Name>1</TreeNode_Name>
</row>
(3)Auto模式
select *
from 表名
for xml auto,elements
执行结果
<td_Tree_Node>
<TreeNode_ID>2</TreeNode_ID>
<TreeNode_Name>1</TreeNode_Name>
</td_Tree_Node>
三、可空支持
select *
from 表名
for xml path,elements xsinil
执行结果
<row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<TreeNode_ID>2</TreeNode_ID>
<TreeNode_Name>1</TreeNode_Name>
<Parent_ID xsi:nil="true" />
</row>
四、附加Schema结构
select *
from 表名
for xml auto ,xmlschema
执行结果
除了基本数据外,增加Schema结构的XML表述,如下所示
<xsd:schema targetNamespace="urn:schemas-microsoft-com:sql:SqlRowSet1" xmlns:schema="urn:schemas-microsoft-com:sql:SqlRowSet1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sqltypes="http://schemas.microsoft.com/sqlserver/2004/sqltypes" elementFormDefault="qualified">
<xsd:import namespace="http://schemas.microsoft.com/sqlserver/2004/sqltypes" schemaLocation="http://schemas.microsoft.com/sqlserver/2004/sqltypes/sqltypes.xsd" />
<xsd:element name="td_Tree_Node">
<xsd:complexType>
<xsd:attribute name="TreeNode_ID" type="sqltypes:int" use="required" />
<xsd:attribute name="TreeNode_Name" use="required">
<xsd:simpleType>
<xsd:restriction base="sqltypes:varchar" sqltypes:localeId="2052" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth">
<xsd:maxLength value="50" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:schema>
五、Root:自定制根元素名称
select *
from td_Tree_Node
for xml auto ,root('根节点')
执行结果
<根节点>
<td_Tree_Node TreeNode_ID="2" TreeNode_Name="1" />
</根节点>
六、Type:指明返回XML数据类型的结果,多用于嵌套查询
七、Path模式下XML格式化
TreeNode_Name as "Details/@Name",
TreeNode_Code as "Details/text()"
from td_Tree_Node
for xml path
执行结果
<row TreeNode_ID="2">
<Details Name="1">1</Details>
</row>