使用SQL Server中的NodeValues生成XML

时间:2011-07-06 11:28:37

标签: sql-server xml

我正在尝试从SQL Server生成XML,并且需要我选择的字段而不是属性。

我当前的SQL是: -

  

从帐户中选择AccountNumber FOR XML AUTO

然后

生成XML,如: -

<Account AccountNumber="12345" />

我希望它显示为: -

<AccountNumber>12345</AccountNumber>

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:3)

您还应该查看SQL Server 2008及更新版本中可用的FOR XML PATH(...),ROOT(....)构造:MSDN docs

这将允许你

  • 为许多XML元素指定根节点
  • 指定XML标记名称
  • 将某些位指定为XML属性

所以在你的情况下,你可以,例如创建类似的东西:

SELECT
    AccountNumber, AcctID AS '@AcctID',
    AccountHolder
FROM
    dbo.Accounts
FOR XML PATH('Account'), ROOT('AllAccounts')

你会得到类似的结果:

<AllAccounts>
   <Account AcctID="42">
      <AccountNumber>12345</AccountNumber>
      <AccountHolder>John Doe</AccountHolder>
   </Account> 
   <Account AcctID="4711">
      <AccountNumber>54321</AccountNumber>
      <AccountHolder>Jane Willis-Doe</AccountHolder>
   </Account> 
   ..... (possibly more <Account> elements) ......
</AllAccounts>

使用FOR XML PATH方法,您可以非常轻松地微调生成的XML应该是什么样的。

答案 1 :(得分:2)

将ELEMENTS添加到最后:

SELECT AccountNumber FROM Account FOR XML AUTO, ELEMENTS