我具有使用SQL查询生成的以下XML输出(在rextester链接中添加):
<Main xmlns:json="http://www.samplenamespace.com/json">
<ID>1001</ID>
<details>
<name>John</name>
<age>12</age>
</details>
</Main>
我想知道如何向'Main'节点添加名称空间xmlns:json="http://www.samplenamespace.com/json"
。
期望的结果:
<Main xmlns:json="http://www.samplenamespace.com/json">
<ID json:ValueType="Number">1001</ID>
<details>
<name>John</name>
<age>12</age>
</details>
</Main>
上个月的链接:http://rextester.com/FAV86925
有什么帮助吗?!
答案 0 :(得分:1)
我不知道我是否正确地做到了,但是此查询将一次性创建您的XML。如果1:n
没有<details>
关系,则不需要子选择。
btw:您不应将年龄存储为int,而应存储DOB并按需计算年龄。
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)
;WITH XMLNAMESPACES ('http://www.samplenamespace.com/json' as json)
select 'Number' AS [ID/@json:ValueType]
,cd1.cid AS ID
,cd1.[name] AS [details/name]
,cd1.age AS [details/age]
from #Cdetails cd1
For XML Path('Main');
结果
<Main xmlns:json="http://www.samplenamespace.com/json">
<ID json:ValueType="Number">1001</ID>
<details>
<name>John</name>
<age>12</age>
</details>
</Main>
<Main xmlns:json="http://www.samplenamespace.com/json">
<ID json:ValueType="Number">1002</ID>
<details>
<name>Rick</name>
<age>19</age>
</details>
</Main>
... more of them