【问题标题】:Add JSON Valuetypes to XML Nodes using SQL使用 SQL 将 JSON 值类型添加到 XML 节点
【发布时间】:2018-06-28 20:51:34
【问题描述】:

我使用 SQL 查询生成了以下 XML 输出(在 rextester 链接中添加):

<Main xmlns:json="http://www.samplenamespace.com/json">
 <ID>1001</ID>
 <details>
    <name>John</name>
    <age>12</age>
 </details>
</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>

rextester 链接:http://rextester.com/FAV86925

有什么帮助吗?!

【问题讨论】:

    标签: json sql-server xml value-type


    【解决方案1】:

    我不知道我的理解是否正确,但这个查询会一次性创建您的 XML。如果&lt;details&gt; 没有1:n 关系,则不需要子选择。

    顺便说一句:您不应该将年龄存储为 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多