繁体   English   中英

SQL Server-FOR XML PATH:如何将xmlns:xsd添加到根元素?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM