【问题标题】:How to add namespace to SQL Server generated XML output如何将命名空间添加到 SQL Server 生成的 XML 输出
【发布时间】:2018-12-07 22:11:35
【问题描述】:

我使用 SQL Server 查询生成了以下 XML 输出(在 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

有什么帮助!?

【问题讨论】:

    标签: sql sql-server xml sql-server-2008 xml-namespaces


    【解决方案1】:

    需要使用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

    【讨论】:

    • 谢谢。如何将 'json:ValueType="Number" ' 之类的属性添加到节点?我想添加 12。你也可以试一试吗?
    • 明白。我怀疑这个问题是否可以关闭说它是多余的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2017-09-21
    • 1970-01-01
    • 2012-06-20
    相关资源
    最近更新 更多