我在SQL server数据库中有一个表,我使用此查询从表中生成XML。
SELECT OrderNumber, CustomerID, ITEM
FROM OrderHeader
FOR XML RAW('Order'), ELEMENTS, ROOT('Orders')
我得到这样的XML:
<Orders>
<Order>
<OrderNumber>SO101</OrderNumber>
<CustomerID>1</CustomerID>
<Item>item 1</Item>
</Order>
<Order>
<OrderNumber>SO102</OrderNumber>
<CustomerID>1</CustomerID>
<Item>item 2</Item>
</Order>
</Orders>
但我需要以下面的格式生成XML。
<Orders>
<Order OrderNumber= 'SO101'>
<CustomerID>1</CustomerID>
<Item>item 1</Item>
</Order>
<Order OrderNumber= 'SO102'>
<CustomerID>1</CustomerID>
<Item>item 2</Item>
</Order>
</Orders>
即。订单号列需要显示为订单节点的属性。
我怎样才能做到这一点?
答案 0 :(得分:2)
我认为您会发现XML RAW会限制您的选择。
尝试使用XML PATH,如下所示:
SELECT OrderNumber AS @Id, CustomerID, ITEM
FROM OrderHeader
FOR XML PATH('Order'), ELEMENTS, ROOT('Orders')
我想看看是否有诀窍,此刻也试图改进我的XML。
答案 1 :(得分:1)
试试这个,
SELECT
OrderNumber AS "Order/@OrderNumber",
CustomerID,
ITEM
FROM
OrderHeader
FOR XML PATH, ELEMENTS, ROOT('Orders')
了解更多details