2011-06-23 105 views
0

我需要使用'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

回答

4
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對我來說非常重要,因爲我正在導出一張包含許多特殊字符的表格。謝謝! –

0

約根節點,MSSQL的新版本允許寫簡單:

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