Friday, July 29, 2011

How can split up xml nodes?

Declare @xmlData xml

set @xmlData = convert(xml,

'<root><Orders>

<Order>
  <OrderNumber>456456019</OrderNumber>
 
  <ProductType>PO</ProductType>
 
  <ProductID>4654</ProductID>
 
  <BundleOrderNumber>B3025094</BundleOrderNumber>

  <ProductDescription>Lined 50-Sheet Notepad</ProductDescription>

  <SiteName>Event Note Takers</SiteName>

  <RedLineQty>5000</RedLineQty>

  <TargetInventory>20000</TargetInventory>

 </Order>

 <Order>

  <OrderNumber>456456020</OrderNumber>

  <ProductType>FF</ProductType>

  <ProductID>1234</ProductID>

  <BundleOrderNumber>B3025094</BundleOrderNumber>

  <ProductDescription>Lined 50-Sheet Notepad</ProductDescription>

  <SiteName>Event Note Takers</SiteName>

  <RedLineQty>5000</RedLineQty>

  <TargetInventory>20000</TargetInventory>

  </Order>
 
 <Order>

  <OrderNumber>456456021</OrderNumber>

  <ProductType>PO</ProductType>

  <ProductID>56454</ProductID>

  <BundleOrderNumber>B3025094</BundleOrderNumber>

  <ProductDescription>Lined 50-Sheet Notepad</ProductDescription>

  <SiteName>Event Note Takers</SiteName>

  <RedLineQty>5000</RedLineQty>

  <TargetInventory>20000</TargetInventory>

  </Order> 

  </Orders></root>');


-- Temp table to store the xml for temp selection

Declare @tbl as Table

(xData xml)

insert into @tbl values(@xmlData)


-- final table which will have the xml rows

Declare @tblFinal TABLE

(xData xml)



insert into @tblFinal (xData)

SELECT T2.Orders.query('.')

FROM   @tbl

CROSS APPLY @xmlData.nodes('/root/Orders/Order') as T2(Orders)


select * from @tblFinal

No comments:

Post a Comment