SQLSERVER輸出XML;根據(jù)FOR XML語句設(shè)置輸出模式:RAW 、AUTO 、EXPLICIT 、PATH;模式確定產(chǎn)生的XML的形狀。
不推薦使用FOR XML選項的XMLDATA指令。如果是RAW 和AUTO模式,請使用XSD生成。在EXPLICIT模式下,沒有XMLDATA指令的替代項。后續(xù)版本的Microsoft?SQL Server將刪除該功能。
下面為每種模式的示例詳解;
測試數(shù)據(jù)庫:Dim_RegType
SELECT?top?2?[GHTYPEID],[GHTYPENAME],[ISPROFESSOR]??FROM?[Dim_RegType]
?結(jié)果:
1.RAW模式?:RAW 模式將為 SELECT 語句所返回行集中的每行生成一個
SELECT?top?2?[GHTYPEID],[GHTYPENAME],[ISPROFESSOR]??FROM?[Dim_RegType]???FOR??XML?RAW
?結(jié)果:
?
2.AUTO模式:表每行數(shù)據(jù)變成了一行XML節(jié)點,其中列數(shù)據(jù)變成了XML中的屬性,如果原列值為NULL,則XML中不予體現(xiàn)。自動關(guān)連到相應(yīng)的項目,和RAW一樣在不加Elements屬性時以這種方式返回數(shù)據(jù)
SELECT?top?2?[GHTYPEID],[GHTYPENAME],[ISPROFESSOR]??FROM?[Dim_RegType]??FOR??XML???AUTO
結(jié)果:
?
3.EXPLICIT模式(摘自:SQL SERVER輸出XML)?
? ?EXPLICIT 模式允許對 XML 的形狀進行更多控制。 您可以隨意混合屬性和元素來確定 XML 的形狀。由于執(zhí)行查詢而生成的結(jié)果行集需要具有特定的格式。此行集格式隨后將映射為 XML 形狀。使用 EXPLICIT 模式能夠隨意混合屬性和元素、創(chuàng)建包裝和嵌套的復(fù)雜屬性、創(chuàng)建用空格分隔的值(例如 OrderID 屬性可能具有一列排序順序 ID 值)以及混合內(nèi)容。但是,編寫EXPLICIT模式的查詢會比較麻煩??梢允褂媚承┬碌?FOR XML功能(例如編寫嵌套 FOR XML RAW/AUTO/PATH 模式查詢和 TYPE 指令),而不使用 EXPLICIT 模式來生成層次結(jié)構(gòu)。嵌套 FOR XML 查詢可以生成使用 EXPLICIT模式可生成的任何XML。
?
4.PATH模式:
SELECT?top?2?[GHTYPEID],[GHTYPENAME],[ISPROFESSOR]??FROM?[Dim_RegType]???FOR??XML?PATH
結(jié)果:
1普通掛號02離休0
?
5.ELEMENTS ?(摘自:SQL SERVER輸出XML)?
?ELEMENTS指定列作為子元素返回,即 ELEMENTS 選項指定 XML 結(jié)果是以元素為中心的。否則,列將映射到 XML 屬性。只在 RAW、AUTO 和 PATH 模式中支持該選項。
?5.1 PATH:
SELECT?top?2?[GHTYPEID],[GHTYPENAME],[ISPROFESSOR]??FROM?[Dim_RegType]???FOR??XML?PATH?,ELEMENTS
? ? ?結(jié)果:
1普通掛號02離休0
?5.2 RAW:
SELECT?TOP?2?[GHTYPEID],[GHTYPENAME],[ISPROFESSOR]??FROM?[Dim_RegType]???FOR??XML?RAW?,ELEMENTS
? ? 結(jié)果:
1普通掛號02離休0
?5.3 AUTO:
SELECT?top?2?[GHTYPEID],[GHTYPENAME],[ISPROFESSOR]??FROM?[Dim_RegType]???FOR??XML?AUTO,ELEMENTS
? ? 結(jié)果:
1普通掛號02離休0
6.TYPE
? 6.1 PATH?
SELECT?TOP?2?[GHTYPEID],[GHTYPENAME],[ISPROFESSOR]??FROM?[Dim_RegType]???FOR??XML?PATH?,TYPE
?結(jié)果:
1普通掛號02離休0
? 6.2 RAW
SELECT?top?2?[GHTYPEID],[GHTYPENAME],[ISPROFESSOR]??FROM?[Dim_RegType]???FOR??XML?RAW,TYPE
? 結(jié)果:
? 6.3 AUTO
SELECT?top?2?[GHTYPEID],[GHTYPENAME],[ISPROFESSOR]??FROM?[Dim_RegType]??FOR??XML??AUTO?,TYPE
? 結(jié)果:
?
?XML輸出的自定義:以PATH為例(本人測試下面的設(shè)置只適用與PATH和RAW模式,EXPLICIT這個模式?jīng)]有試過);將XML以文件形式輸出;
示例1:
SELECT?top?2?[GHTYPEID]?AS??ID?,[GHTYPENAME]?AS?NAME,[ISPROFESSOR]?AS?PRO??FROM?[Dim_RegType]???FOR??XML?PATH('ROOT')
結(jié)果:
示例2:
SELECT?top?2?[GHTYPEID]??,[GHTYPENAME]??,[ISPROFESSOR]????FROM?[Dim_RegType]???FOR??XML?PATH('')
結(jié)果:
1普通掛號02離休0