Генерация XML из SQL Server с использованием явного XML и директивы CDATA - PullRequest
0 голосов
/ 23 июня 2011

Мне нужно сгенерировать XML из SQL Server 2008 R2, используя директиву «Для явного XML» и директиву CDATA. Вывод должен быть следующим: -

<?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

Но я не могу этого достичь и где-то застрял.

Большое спасибо.

Ответы [ 2 ]

4 голосов
/ 23 июня 2011
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 голосов
/ 24 апреля 2013

о корневом узле, более новые версии MSSQL позволяют писать проще:

FOR XML EXPLICIT, ROOT('***YOURROOTTAGNAME***')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...