XML 工作是用來處理 XML 資料。 使用這項工作,封裝可以擷取 XML 檔、使用可延伸樣式表單語言轉換 (XSLT) 樣式表單和 XPath 表達式將作業套用至文件、合併多個檔,或驗證、比較,以及將更新的檔案儲存至檔案和變數。
這項工作可讓 Integration Services 套件在運行時間動態修改 XML 檔。 您可以針對下列目的使用 XML 工作:
重新格式化 XML 檔。 例如,任務可以存取位於 XML 文件中的報表,並動態套用 XSLT 樣式表來自訂文件呈現方式。
選取 XML 檔的區段。 例如,工作可以存取位於 XML 檔案中的報表,並動態套用 XPath 運算式來選取檔的區段。 作業也可以取得和處理檔中的值。
合併來自許多來源的檔。 例如,工作可以從多個來源下載報表,並動態將它們合併成一份完整的 XML 檔。
驗證 XML 檔,並選擇性地取得詳細的錯誤輸出。 如需詳細資訊,請參閱 使用 XML 任務驗證 XML。
您可以使用 XML 來源從 XML 檔擷取值,在資料流中包含 XML 數據。 如需詳細資訊,請參閱 XML 來源。
XML 作業
XML 工作執行的第一個動作是擷取特定的 XML 檔。 此動作內建於 XML 工作中,並會自動發生。 擷取的 XML 檔會作為 XML 工作執行之作業的數據源。
XML 作業 Diff、Merge 和 Patch 需要兩個操作元。 第一個作數會指定來源 XML 檔。 第二個作數也會指定 XML 檔,其內容取決於作業的需求。 例如,Diff 操作會比較兩份文件;因此,第二個運算元會指定另一個與來源 XML 文件相似的 XML 文件以進行比較。
XML 工作可以使用變數或檔案連接管理器做為其來源,或在工作屬性中包含 XML 數據。
如果來源是變數,指定的變數會包含 XML 檔案的路徑。
如果來源是檔案連接管理器,指定的檔案連接管理員會提供來源資訊。 檔案連接管理員會與 XML 工作分開設定,並在 XML 工作中參考。 檔案連接管理員的連接字串會指定 XML 檔案的路徑。 如需相關資訊,請參閱 File Connection Manager。
XML 工作可以設定為將作業的結果儲存至變數或檔案。 如果儲存至檔案,XML 工作會使用檔案連接管理員來存取檔案。 您也可以將 Diff 作業所產生的 Diffgram 結果儲存至檔案和變數。
預先定義的 XML 作業
XML 工作包含一組預先定義的作業,用於處理 XML 檔。 下表描述這些作業。
| 行動 | 說明 |
|---|---|
| 差異 | 比較兩個 XML 檔。 使用來源 XML 檔做為基底檔,Diff 作業會將它與第二個 XML 檔進行比較、偵測其差異,並將差異寫入 XML Diffgram 檔。 這項作業包含自定義比較的屬性。 |
| 合併 | 合併兩個 XML 檔。 使用源 XML 檔做為基底檔,「合併」作業會將第二份檔的內容新增至基底檔。 作業可以在基底檔內指定合併位置。 |
| 補丁 | 將 Diff 作業的輸出,稱為 Diffgram 檔,套用至 XML 檔,以建立包含 Diffgram 檔內容的新父檔。 |
| 驗證 | 根據檔案類型定義 (DTD) 或 XML 架構定義 (XSD) 架構來驗證 XML 檔。 |
| XPath | 執行 XPath 查詢和評估。 |
| XSLT | 在 XML 檔上執行 XSL 轉換。 |
比對操作
您可以將對比操作設定為使用不同的比較演算法,以便根據需要快速或精確進行比較。 作業也可以設定為根據所比較檔的大小自動選取快速或精確的比較。
Diff 作業包含一組自定義 XML 比較的選項。 下表描述選項。
| 選項 | 說明 |
|---|---|
| IgnoreComments | 指定用於確定是否比較批注節點的值。 |
| IgnoreNamespaces | 指定是否比較元素及其屬性名稱的命名空間統一資源識別碼 (URI) 的值。 如果此選項設定為 true,則兩個具有相同本機名稱但命名空間不同的元素會視為相同。 |
| IgnorePrefixes | 值,指定是否比較元素和屬性名稱的前綴。 如果此選項設定為 true, 兩個具有相同本機名稱但命名空間 URI 和前置詞不同的元素,則視為相同。 |
| 忽略XML宣告 | 值,指定是否比較 XML 宣告。 |
| 忽略子元素的順序 | 值,指定是否比較子項目的順序。 如果此選項設定為 true,則在兄弟項目列表中僅因位置不同的子元素會被視為相同。 |
| IgnoreWhiteSpaces | 指定是否比較空白的值。 |
| IgnoreProcessingInstructions | 值,指定是否比較處理指令。 |
| IgnoreDTD | 值,指定是否忽略 DTD。 |
合併作業
當您使用 XPath 語句來識別源檔中的合併位置時,此語句應該會傳回單一節點。 如果語句傳回多個節點,則只會使用第一個節點。 第二份文件的內容會在 XPath 查詢傳回的第一個節點下合併。
XPath 操作
XPath 作業可以設定為使用不同類型的 XPath 功能。
選取 [評估] 選項以實作 XPath 函式,例如 sum()。
選取 [ 節點清單 ] 選項,以傳回選取的節點做為 XML 片段。
選取 [ 值] 選項可傳回所有選取節點的內部文字值,並串連至字串。
驗證作業
驗證作業可以設定為使用檔案類型定義 (DTD) 或 XML 架構定義 (XSD) 架構。
啟用 ValidationDetails 以取得詳細的錯誤輸出。 如需詳細資訊,請參閱 使用 XML 任務驗證 XML。
XML 檔編碼
XML 工作僅支持合併 Unicode 檔。 這表示工作只能將合併作業套用至具有 Unicode 編碼的檔。 使用其他編碼會導致 XML 工作失敗。
備註
Diff 和 Patch 作業提供一個選項,允許忽略第二個操作元 XML 數據中的 XML 宣告,使您可以在這些作業中使用具有不同編碼的文件。
若要確認可以使用 XML 檔,請檢閱 XML 宣告。 宣告必須明確指定 UTF-8,這表示 8 位 Unicode 編碼。
下列標籤顯示 Unicode 8 位編碼。
<?xml version="1.0" encoding="UTF-8"?>
XML 工作上可用的自訂記錄訊息
下表描述 XML 任務的自訂日誌項目。 如需詳細資訊,請參閱 Integration Services (SSIS) 記錄 和 自訂記錄訊息。
| 記錄項目 | 說明 |
|---|---|
XMLOperation |
提供有關任務執行操作的資訊 |
XML 工作的組態
您可以透過 SSIS 設計師或以程式設計方式設定屬性。
如需您可以在 SSIS 設計工具中設定之屬性的詳細資訊,請按下列其中一個主題:
如需如何在 SSIS 設計工具中設定屬性的詳細資訊,請按下列主題:
XML 工作的程式設計設定
如需有關以程式設計方式設定這些屬性的詳細資訊,請按下列主題:
相關工作
相關內容
在 agilebi.com 上的部落格文章「XML 目的地腳本元件」
CodePlex 範例,處理 XML 資料封裝範例,www.codeplex.com