使用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
但是,我无法做到这一点,什么地方卡住了。
非常感谢。
答
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***')
这不是有效的XML - 它缺少单个根元素... –
我包含单个根元素。更新。 – Zohaib