2

我在 SQL 服务器数据库中有一个表,我正在使用这个查询从表中生成一个 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>

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

我怎样才能做到这一点?

4

2 回答 2

2

我想您会发现 XML RAW 会限制您的选择。

尝试使用 XML PATH,如下所示:

SELECT OrderNumber AS @Id, CustomerID, ITEM
FROM OrderHeader
FOR XML PATH('Order'), ELEMENTS, ROOT('Orders')

我想看看这是否能解决问题,目前也试图改进我的 XML。

于 2012-07-06T11:12:41.800 回答
1

试试这个,

SELECT 
    OrderNumber AS "Order/@OrderNumber", 
    CustomerID, 
    ITEM
FROM 
    OrderHeader
FOR XML PATH, ELEMENTS, ROOT('Orders')

了解更多详情

于 2012-07-06T11:12:33.487 回答