0

我有这个来自 sql server 的文件输出:

<ProductList>    
<Product>
  <Product_Department>Sales</Product_Department>
  <Product_Category>A</Product_Category>
  <Code>AA</Code>
  <Description>AAA</Description>
  <Price>10</Price>
</Product>
.
.
.
<Product>
.
.
.
</Product>
</ProductList>

sql脚本是:

create proc xmlcollection
as
declare @XmlOutput xml 
set @XmlOutput = (select * from Product
FOR XML AUTO, ROOT('ProductList'), ELEMENTS)
select @XmlOutput
go

xml 文件的所需输出将是:

<ProductList>
<Product DEP="Sales" CAT="A" CODE="AA" PRICE="10"></Product>
<Product.........................................></Product>
.
.
.
</ProductList>

如何从 FOR XML 子句中做到这一点?请帮忙。

4

1 回答 1

0

使用 FOR XML 时需要使用“@”来指定属性值。

见下文:

SELECT
     Product_Department AS '@DEP'
    ,Product_Category AS '@CAT'
    ,Code AS '@Code'
    ,[Description] AS '@DESC'
    ,Price AS '@PRICE'
FROM Product
FOR XML PATH ('Product'), ROOT ('ProductList')

如下所述,或者您也可以使用“类型”:

SELECT
     Product_Department AS 'DEP'
    ,Product_Category AS 'CAT'
    ,Code AS 'CODE'
    ,[Description] AS 'DESC'
    ,Price AS 'PRICE'
FROM Product
FOR XML AUTO, TYPE, ROOT('ProductList')

这将返回以下 XML:

<ProductList>
  <Product DEP="Sales" CAT="A" CODE="AA" DESC="AAA" PRICE="10" />
  <Product DEP="Marketing" CAT="B" CODE="MM" DESC="BBB" PRICE="15" />
</ProductList>

我希望这会有所帮助。

于 2013-06-18T06:19:06.377 回答