2011-07-06 56 views
2

我試圖從SQL Server生成XML,並且需要我選擇的字段位於nodevalue而不是屬性中。使用SQL Server中的NodeValues生成XML

我現在的SQL是: -

SELECT賬戶號碼帳戶與FOR XML AUTO

然後產生XML,如: -

<Account AccountNumber="12345" /> 

,我想它喜歡顯示爲: -

<AccountNumber>12345</AccountNumber> 

任何人都可以指向正確的方向嗎?

回答

2

元素添加到末尾:

SELECT AccountNumber FROM Account FOR XML AUTO, ELEMENTS 
3

您也應該檢查FOR XML PATH(...),ROOT(....)結構可以在SQL Server 2008和更新: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應該是什麼樣子。