需要以下列格式从SQL生成XML

时间:2012-07-06 10:52:37

标签: sql sql-server xml

我在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>

即。订单号列需要显示为订单节点的属性。

我怎样才能做到这一点?

2 个答案:

答案 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