SQL Server中如何在FOR XML语句里添加currencyID="EUR"属性?
可以实现!这里是具体的解决方案
当然可以在SQL Server的FOR XML语句里给节点添加currencyID="EUR"属性,只需要利用PATH模式下的属性语法即可,具体修改如下:
基础实现代码
SELECT 'EUR' AS [@currencyID], -- 定义节点的currencyID属性 LineTotalAmount, TaxTotalAmount, DuePayableAmount FOR XML PATH('ram:SpecifiedTradeSettlementMonetarySummation'), TYPE
关键原理说明
在SQL Server的FOR XML PATH语法中:
- 列名以
@开头时,会被解析为当前节点的属性,而不是子元素 - 普通列名会自动成为目标节点的子元素,和你原来的逻辑保持一致
补充:如果涉及命名空间
如果ram是一个需要声明的命名空间前缀,记得加上WITH XMLNAMESPACES来显式声明,避免XML验证报错:
WITH XMLNAMESPACES ('http://your-namespace-uri-here' AS ram) -- 替换成实际的命名空间URI SELECT 'EUR' AS [@currencyID], LineTotalAmount, TaxTotalAmount, DuePayableAmount FOR XML PATH('ram:SpecifiedTradeSettlementMonetarySummation'), TYPE
这样生成的XML输出就会是你想要的格式:
<ram:SpecifiedTradeSettlementMonetarySummation currencyID="EUR"> <LineTotalAmount>...</LineTotalAmount> <TaxTotalAmount>...</TaxTotalAmount> <DuePayableAmount>...</DuePayableAmount> </ram:SpecifiedTradeSettlementMonetarySummation>
内容的提问来源于stack exchange,提问作者user11921138
相关产品推荐
相关产品推荐

