Как добавить пространство имен в SQL Server сгенерированный вывод XML - PullRequest
0 голосов
/ 28 июня 2018

У меня есть приведенный ниже вывод XML, сгенерированный с использованием запроса SQL Server (добавлен в ссылку rextester):

<Main>
    <ID>1001</ID>
    <details>
        <name>John</name>
        <age>12</age>
    </details>
</Main>

Я хочу знать, как добавить пространство имен xmlns:json="http://www.samplenamespace.com/json" к узлу Main.

Желаемый вывод:

<Main xmlns:json="http://www.samplenamespace.com/json">
    <ID>1001</ID>
    <details>
        <name>John</name>
        <age>12</age>
    </details>
</Main>

Ссылка на Rextester: http://rextester.com/OQZH6668

Любая помощь !?

1 Ответ

0 голосов
/ 28 июня 2018

Вам необходимо использовать предложение WITH XMLNAMESPACES, например:

---Fake tables in Stored procedure1
create table #Cdetails(cid int, name varchar(5), age int)
insert into #Cdetails
values(1001,'John',12),
(1002,'Rick',19),
(1003,'Diane',25),
(1004,'Kippy',26)

--Output of Stored procedure 

create table #final(xml_data xml)
insert into #final
select
XML_data =  
    (select ID = cd1.cid,
    details =
        (
        select cd.name,
        cd.age
        from #Cdetails cd
        where cd.cid = cd1.cid
        For XML Path(''), Type)
    from #Cdetails cd1
    For XML Path('Main'));


WITH XMLNAMESPACES ('http://www.samplenamespace.com/json' as json)  
select * from #final
For XML Path('Main')

drop table #Cdetails,#final

Обратите внимание на дополнительные ;, которые требуются при использовании WITH операторов.

Ссылка на Rextester: http://rextester.com/EBLL48414

...