2012-02-12 51 views
3

如何寫SQL語句來生成XML這樣生成正確的語法XML從SQL Server表

<ROOT> 
    <Production.Product> 
    <ProductID>1 </ProductID> 
    <Name>Adjustable Race</Name> 
    ........ 
    </Production.Product> 
</ROOT> 

目前,我與

SELECT * FROM Production.Product 
    FOR XML auto 

結果越來越是這樣的:

<ROOT> 
    <Production.Product ProductID="1" Name="Adjustable Race" 
     ProductNumber="AR-5381" MakeFlag="0" FinishedGoodsFlag="0" 
     SafetyStockLevel="1000" ReorderPoint="750" StandardCost="0.0000" 
     ListPrice="0.0000" DaysToManufacture="0" SellStartDate="1998-06-01T00:00:00" 
     rowguid="694215B7-08F7-4C0D-ACB1-D734BA44C0C8" 
     ModifiedDate="2004-03-11T10:01:36.827" /> 

回答

8

一個簡單的方法是使用:

SELECT * 
FROM Production.Product 
FOR XML AUTO, ELEMENTS 

然後,您的數據應存儲在<Production.Product>節點內的XM​​L元素中。

如果你需要更多的控制,那麼你應該看看FOR XML PATH語法 - 退房What's new in FOR XML in SQL Server 2005這個MSDN文章這也解釋了FOR XML PATH(其他新功能中)。

基本上,FOR XML PATH,你可以控制很容易的事情是如何渲染 - 爲元素或屬性 - 是這樣的:

SELECT 
    ProductID AS '@ProductID', -- rendered as attribute on XML node 
    Name, ProductNumber,  -- all rendered as elements inside XML node 
    ..... 
FROM Production.Product 
FOR XML PATH('NewProductNode') -- define a new name for the XML node 

這將使你是這樣的:

<NewProductNode ProductID="1"> 
    <Name>Adjustabel Race</Name> 
    <ProductNumber>AR-5381</ProductNumber> 
    ..... 
</NewProductNode>