[英]SQL Server - FOR XML PATH : how to add xmlns:xsd to the root element?
我正在使用此查询:
select
SalesOrderID, OrderDate, DueDate, rowguid
from
Sales.SalesOrderHeader
where
SalesOrderID between 43661 and 43662
for xml path('Order'), Root('AllOrders')
输出为:
<AllOrders>
<Order>
<SalesOrderID>43661</SalesOrderID>
<OrderDate>2005-07-01T00:00:00</OrderDate>
<DueDate>2005-07-13T00:00:00</DueDate>
<rowguid>D91B9131-18A4-4A11-BC3A-90B6F53E9D74</rowguid>
</Order>
<Order>
<SalesOrderID>43662</SalesOrderID>
<OrderDate>2005-07-01T00:00:00</OrderDate>
<DueDate>2005-07-13T00:00:00</DueDate>
<rowguid>4A1ECFC0-CC3A-4740-B028-1C50BB48711C</rowguid>
</Order>
</AllOrders>
我希望这是预期的输出(已添加xmlns:xsd
):
<AllOrders xmlns:xsd="some schema URL">
<Order>
<SalesOrderID>43661</SalesOrderID>
<OrderDate>2005-07-01T00:00:00</OrderDate>
<DueDate>2005-07-13T00:00:00</DueDate>
<rowguid>D91B9131-18A4-4A11-BC3A-90B6F53E9D74</rowguid>
</Order>
<Order>
<SalesOrderID>43662</SalesOrderID>
<OrderDate>2005-07-01T00:00:00</OrderDate>
<DueDate>2005-07-13T00:00:00</DueDate>
<rowguid>4A1ECFC0-CC3A-4740-B028-1C50BB48711C</rowguid>
</Order>
</AllOrders>
我要查询哪些修改以实现上述输出?
您可以使用XMLNAMESPACES
;
WITH XMLNAMESPACES ('http://foo.com/bar' AS xsd)
select SalesOrderID,OrderDate,DueDate...
通常,您始终可以转换为nvarchar(max)并进行文本替换。
这意味着您可以这样做
select replace(cast((
select SalesOrderID,OrderDate,DueDate,rowguid from Sales.SalesOrderHeader
where SalesOrderID between 43661 and 43662
for xml path('Order'), Root('AllOrders')
) as nvarchar(max)), N'<AllOrders>', N'<AllOrders xmlns:xsd="http://foo.com/bar">')
尽管我更希望您按照@AlexK的建议进行操作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.