使用XML显式和CDATA指令从SQL Server生成XML

问题描述:

我需要使用'For XML explicit'和CDATA指令从SQL Server 2008 R2生成XML。输出应该像以下内容: -使用XML显式和CDATA指令从SQL Server生成XML

<?xml version="1.0" encoding="utf-8" ?> 
<JOB> 
<AD> 
<ID><![CDATA[ 451 ]]></ID> 
<TITLE><![CDATA[ Receptionist ]]></TITLE> 
</AD> 
<AD> 
<ID><![CDATA[ 1025 ]]></ID> 
<TITLE><![CDATA[ Secretary ]]></TITLE> 
</AD> 
</JOB> 

虽然,表的模式是,

Table Name : AD 
Column1 : ID 
Column2 : TITLE 

但是,我无法做到这一点,什么地方卡住了。

非常感谢。

+0

这不是有效的XML - 它缺少单个根元素... –

+0

我包含单个根元素。更新。 – Zohaib

declare @T table(ID int, TITLE varchar(50)) 
insert into @T values(451, 'Receptionist') 
insert into @T values(1025, 'Secretary') 

select 1 as Tag, 
     null as Parent, 
     ID as [AD!1!ID!CDATA], 
     TITLE as [AD!1!TITLE!CDATA] 
from @T  
order by [AD!1!ID!CDATA] 
for xml explicit 

结果:

<AD> 
    <ID><![CDATA[451]]></ID> 
    <TITLE><![CDATA[Receptionist]]></TITLE> 
</AD> 
<AD> 
    <ID><![CDATA[1025]]></ID> 
    <TITLE><![CDATA[Secretary]]></TITLE> 
</AD> 

编辑: 随着根节点:

declare @T table(ID int, TITLE varchar(50)) 
insert into @T values(451, 'Receptionist') 
insert into @T values(1025, 'Secretary') 

select 1 as Tag, 
     null as Parent, 
     null as [JOB!1], 
     null as [AD!2!ID!CDATA], 
     null as [AD!2!TITLE!CDATA] 
union all 
select 2 as Tag, 
     1 as Parent, 
     null, 
     ID, 
     TITLE 
from @T 
order by Tag, [AD!2!ID!CDATA]  
for xml explicit  
+0

@米克尔埃里克森谢谢。 – Zohaib

+0

完美答案!包含CDATA对我来说非常重要,因为我正在导出一张包含许多特殊字符的表格。谢谢! –

约根节点,MSSQL的新版本允许写简单:

FOR XML EXPLICIT, ROOT('***YOURROOTTAGNAME***')