XmlDataDocument 類別是 XmlDocument 的衍生類別,且包含 XML 數據。 XmlDataDocument 的優點是它提供關係型和階層式數據之間的橋樑。 它是可以系結至 DataSet 的 XmlDocument,而且這兩個類別都可以同步處理對兩個類別中所含數據的變更。 系結至 DataSet 的 XmlDocument 可讓 XML 與關係型數據整合,而且您不必讓數據以 XML 或關係型格式表示。 您可以同時處理兩者,而不會被限制在單一的數據表現形式上。
在兩個檢視中提供數據的優點如下:
XML 檔的結構化部分可以對應至數據集,並有效率地儲存、編製索引和搜尋。
透過關係型方式儲存的 XML 數據,您可以使用游標模型高效地進行轉換、驗證和導覽。 有時,相較於 XML 儲存在 XmlDocument 模型中,它可以更有效率地針對關係結構執行。
DataSet 可以儲存 XML 的一部分。 也就是說,您可以使用 XPath 或 XslTransform 只儲存至 DataSet 那些感興趣的元素和屬性。 從該處,您可以對較小的篩選數據子集進行變更,並將變更傳播至 XmlDataDocument 中的較大數據。
您也可以對從 SQL Server 載入 DataSet 的數據執行轉換。 另一個選項是將 .NET Framework 類別樣式管理的 WinForm 和 WebForm 控制件系結至從 XML 輸入數據流填入的 DataSet 。
除了支援 XslTransform 之外, XmlDataDocument 也會向 XPath 查詢和驗證公開關係型數據。 基本上,所有 XML 服務都可透過關係型數據取得,而控制系結、codegen 等關係型設施可透過 XML 的結構化投影取得,而不會影響 XML 精確度。
因為 XmlDataDocument 繼承自 XmlDocument,所以它會提供 W3C DOM 的實作。 XmlDataDocument 與 DataSet 相關聯並儲存其數據子集,但這不會以任何方式限制或改變其作為 XmlDocument 的使用。 撰寫以使用 XmlDocument 的程式碼可以直接運行於 XmlDataDocument,而無需修改。 DataSet 藉由定義數據表、數據行、關聯和條件約束,提供相同數據的關係型檢視,而且是獨立的記憶體內部用戶數據存放區。
下圖顯示 XML 資料與 DataSet 和 XmlDataDocument 的不同關聯:
此圖顯示 XML 資料可以直接載入 DataSet,以關係型方式直接操作 XML。 或者,XML 可以載入至 DOM 的衍生類別,也就是 XmlDataDocument,然後載入並與 DataSet 同步處理。 由於 DataSet 和 XmlDataDocument 會透過單一資料集進行同步處理,因此對一個存放區中的數據所做的變更會反映在另一個存放區中。
XmlDataDocument 會從 XmlDocument 繼承所有編輯和導覽功能。 有時使用 XmlDataDocument 及其繼承的功能,與 DataSet 同步處理,是比直接將 XML 載入 DataSet 更適當的選項。 下表顯示在選擇用於載入 DataSet 的方法時需要考慮的項目。
| 將 XML 直接載入 DataSet 的時機 | 何時同步處理 XmlDataDocument 文件與 DataSet |
|---|---|
| DataSet 中的數據查詢比 XPath 更容易使用 SQL。 | DataSet 中的數據需要 XPath 查詢。 |
| 在來源 XML 中保留項目順序並不重要。 | 保留來源 XML 中的項目順序非常重要。 |
| 元素之間和格式中的空白不需要保留在源 XML 中。 | 在來源 XML 中,空白及格式的保留非常重要。 |
如果直接從 DataSet 載入和寫入 XML 符合您的需求,請參閱 從 XML 載入資料集 ,並將 DataSet 寫入為 XML 數據。
如果從 XmlDataDocument 載入 DataSet 符合您的需求,請參閱同步處理資料集與 XML 檔。