具有名称空间的TSQL xml输出

时间:2018-06-19 14:36:44

标签: sql-server tsql xml-namespaces

寻找洞察力,以了解如何更好地控制SQL Server 2016将XML命名空间放在何处。以下是正确格式化数据的查询(请不要问为什么subData,我不知道,希望不是这样,但它是...)

 WITH XMLNAMESPACES ('http://www.adomain.com' as ns2)
 select td1.id as '@id',
    (
    select td2.questionNumber, td2.questionType, td2.section
    from @TestData td2
    where td1.id = td2.id
    FOR XML PATH('subData'), TYPE
    ) as xml_output
   from @TestData td1
order by td1.questionNumber
 FOR XML path ('mainData'), ROOT('ns2:theRoot');

输出是正确的,但是由于某种原因,它总是在每个子数据上放置xmlns:ns2 =“ http://www.adomain.com”。如何更改查询以使名称空间仅位于TheRoot上?

<ns2:theRoot xmlns:ns2="http://www.adomain.com">
    <mainData id="A_SHORTA">
        <xml_output>
            <subData xmlns:ns2="http://www.adomain.com">
                <questionNumber>A_SHORTA</questionNumber>
                <questionType>rad</questionType>
                <section>A</section>
            </subData>
        </xml_output>
    </mainData>
</ns2:theRoot>

0 个答案:

没有答案