sql-server - 带有命名空间的 TSQL xml 输出
问题描述
寻找有关如何更好地控制 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>
解决方案
推荐阅读
- mysql - 如何将一列添加到表中,它结合了其他列中的字符串?
- dictionary - Ansible vars 不替换字典中的变量
- json - 基于数据类型而不是数据值的 Pact Consumer / Provider
- python - 我的 Python 脚本读取错误的 RGB 值 - OpenCV
- r - 是否有用于查找变量之间共享特征的 R 函数?
- sql - 在 SQL 中将两列值相加
- javascript - 如何破译映射函数到键值对
- django - 管理员内联的反向使用:错误消息没有外键
- java - 日期格式 dd/mm/yy
- angular - @NgModule static forRoot 实现动态模块时