如何编写SQL语句来生成这样的XML
<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" />
答案 0 :(得分:8)
一种简单的方法是使用:
SELECT *
FROM Production.Product
FOR XML AUTO, ELEMENTS
然后,您的数据应存储在<Production.Product>
节点内的XML元素中。
如果您需要更多控制权,那么您应该查看FOR XML PATH
语法 - 请查看What's new in FOR XML in SQL Server 2005上的这篇MSDN文章,其中解释了FOR XML PATH
(以及其他新功能)。< / p>
基本上,使用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>