SQL Server 2000 原生支援 XML,讓關聯資料與階層式 XML 雙向轉換無需撰寫剖析程式。本文詳細示範 FOR XML 三種模式(RAW、AUTO、EXPLICIT)產生 XML、結合 XSLT 轉換格式、OPENXML 將 XML 文件剖析為資料列集寫入資料表、ADO GetXML/WriteXML 離線資料集操作,並提供完整範例程式碼。
| 模式 | 輸出結構 | 適用場景 |
|---|---|---|
| RAW | 每列轉為 <row> 元素,欄位為屬性 | 簡單平面 XML,無巢狀需求 |
| AUTO | 依 FROM 子句表名產生巢狀元素,欄位為屬性 | 快速產生階層 XML,結構隨查詢自動推導 |
| EXPLICIT | 完全控制元素巢狀、屬性、ID/IDREF 關聯 | 複雜 XML 結構需求,語法較繁瑣 |
DECLARE @hdoc INT, @xml VARCHAR(8000)
SET @xml = '<Orders><Order OrderID="10248" CustID="VINET" />...</Orders>'
EXEC sp_xml_preparedocument @hdoc OUTPUT, @xml
INSERT INTO Orders (OrderID, CustomerID)
SELECT OrderID, CustID FROM OPENXML(@hdoc, '/Orders/Order', 2)
WITH (OrderID INT, CustID VARCHAR(5))
EXEC sp_xml_removedocument @hdoc
搭配 FOR XML AUTO, XMLDATA 產生結構描述,配合 XSLT 樣式表在瀏覽器或中間層轉換為 HTML/PDF 等呈現格式,實現資料與展示分離。