使用SQL将JSON值类型添加到XML节点

时间:2018-06-28 20:51:35

标签: json sql-server xml value-type

我具有使用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

有什么帮助吗?!

1 个答案:

答案 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