Manas Saha
Manas Saha

Reputation: 1497

Need to generate XML from SQL in this following format

I have a table in SQL server database and I am generating an XML from the table using this query.

SELECT OrderNumber, CustomerID, ITEM
FROM OrderHeader
FOR XML RAW('Order'), ELEMENTS, ROOT('Orders')

I get an XML like this:

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

But I need to generate the XML in the below format.

<Orders>
<Order OrderNumber= 'SO101'>        
    <CustomerID>1</CustomerID>
            <Item>item 1</Item>
</Order>
  <Order OrderNumber= 'SO102'>      
    <CustomerID>1</CustomerID>
            <Item>item 2</Item>
</Order>
</Orders>

i.e. the Order number column needs to be displayed as an attribute of the Order Node.

How can I achieve this?

Upvotes: 2

Views: 87

Answers (2)

phillyd
phillyd

Reputation: 797

I think you'll find that XML RAW will limit your options.

Try using XML PATH, something like this:

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

I'd like to see if that does the trick, trying to better my XML at the moment too.

Upvotes: 2

Kerberos
Kerberos

Reputation: 1266

Try this,

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

For more details

Upvotes: 1

Related Questions