文章編號: 311566 - 上次校閱: 2007年5月13日 - 版次: 2.4

如何使用 Visual C#.NET 中讀入資料集的 XML 資料

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

結論

本文將告訴您,如何 「 可延伸標記語言 」 (XML) 資料讀入 ADO.NET 資料集 物件。

需求

下列清單列出建議的硬體、 軟體、 網路基礎結構及您需要的服務套件:
  • Microsoft Windows 2000 專業版,Windows 2000 Server,Windows 2000 進階伺服器或 Windows NT 4.0 伺服器
  • Microsoft Visual Studio.NET
本文假設您已熟悉下列主題:
  • Visual Studio.NET
  • ADO.NET 基本原則及語法
  • XML 的基本原則

該技巧的描述

您可以使用 ReadXml 方法來將 XML 結構描述和資料讀入 資料集。可直接從檔案]、 [資料流 物件]、 [XmlWriter 物件] 或 [TextWriter 物件讀取 XML 資料。

您可以為 ReadXml] 方法使用兩組多載方法的其中一個根據您的需求。第一組四個多載的方法會採用一個參數。第二個設定的四個多載的方法會額外的參數 (XmlReadMode) 以及與其中一個參數從第一組。

下列清單列出採用一個參數的多載方法的第一組:
  • 依照程式碼會使用指定的檔案讀入 資料集 的 XML 結構描述和資料:
    Overloads Public Sub ReadXml(String)
    					
  • 請依照下列程式碼會使用指定的 TextReader 讀入 資料集 的 XML 結構描述和資料。TextReader 針對字元輸入
    Overloads Public Sub ReadXml(TextReader)
    					
  • 請依照下列程式碼會使用指定的 System.IO.Stream 讀入 資料集 的 XML 結構描述和資料。資料流 類別為了輸入和輸出的位元組
    Overloads Public Sub ReadXml(Stream)
    					
  • 請依照下列程式碼會使用指定的 XmlReader 讀入 資料集 的 XML 結構描述和資料。這個方法會提供快速、 非快取,轉寄-只存取至 XML 資料符合全球資訊網協會 (W3C) XML 1.0 規格和 XML 規格中的命名空間
    Overloads Public Sub ReadXml(XmlReader)
    					
遵循清單列出採取 XmlReadMode 與其中一個上述參數的多載方法的第二組。XmlReadMode 列舉型別會指定如何讀入 資料集 的 XML 資料和結構描述。
  • DiffGram。讀取一個 DiffGram,並將變更從 [DiffGram 套用至 資料集
  • 片段。讀取包含內嵌 XML 資料精簡 (XDR) 結構描述片段 (例如那些執行 FOR XML 結構描述包含內置 XDR 結構描述 Microsoft SQL Server 執行個體時所產生的) 的 XML 文件。
  • IgnoreSchema。會忽略任何內嵌結構描述,並讀取資料到現有的 資料集 結構描述。
  • InferSchema。會忽略任何內嵌結構描述、 會從該資料的結構描述推斷並載入資料。如果 資料集 已經包含結構描述,InferSchema 會擴充目前的結構描述,藉由新增要存在的資料表資料行和以新增新的資料表,如果資料表不存在。
  • ReadSchema。讀取任何內嵌結構描述,並載入資料。
  • 自動。預設值。執行最適當的動作。

建立專案並加入程式碼

這個範例使用一個名為 MySchema.xml 的檔案。如果要建立 MySchema.xml,請依照下列步驟,下列 「 Microsoft 知識庫 」 文件中:
309183? (http://support.microsoft.com/kb/309183/EN-US/ ) 如何使用 Visual C#.NET 保存為 XML 的 ADO.NET 資料集
下列程式碼範例會示範如何使用兩個常用的多載版本的 ReadXml。如需其他範例參考 MSDN 取得這個方法的多載個別主題。
  1. 啟動 Visual Studio.NET。
  2. 在 Visual C#.NET 中建立新的 Windows 應用程式專案時。Form1 是根據預設值加入至專案。
  3. 請確定您的專案包含之 System.Data 命名空間的參考,然後加入這個命名空間的參考,如果不符合。
  4. 放置兩個 按鈕 控制項和一個 DataGrid 控制項,在 Form1 上。將 Button1] 的 [名稱] 屬性變更為 btnReader,並將其 Text 屬性變更為 讀取器

    將 Button2] 的 [名稱] 屬性變更為 btnFile,並將其 Text 屬性變更為 檔案
  5. 系統System.DataSystem.Data.SqlClient 命名空間上使用 using 陳述式,使您不需要限定在稍後的程式碼中的這些命名空間中宣告
    using System;
    using System.Data;
    using System.Data.SqlClient;
    					
  6. 在按鈕上對應的事件處理常式中加入下列程式碼:
    private void btnReader_Click(object sender, System.EventArgs e)
    {
        string myXMLfile = @"C:\MySchema.xml";
        DataSet ds = new DataSet();
        // Create new FileStream with which to read the schema.
        System.IO.FileStream fsReadXml = new System.IO.FileStream 
            (myXMLfile, System.IO.FileMode.Open);
        try
        {
            ds.ReadXml(fsReadXml);
            dataGrid1.DataSource = ds;
            dataGrid1.DataMember = "Cust";
        }
        catch (Exception ex)
        {
    	MessageBox.Show(ex.ToString());
        }
        finally
        {
    	fsReadXml.Close();
        }
    }
    		
    private void btnFile_Click(object sender, System.EventArgs e)
    {
        string myXMLfile = "C:\\MySchema.xml";
        DataSet ds = new DataSet(); 
        try
        {
            ds.ReadXml(myXMLfile);
            dataGrid1.DataSource = ds;
            dataGrid1.DataMember = "Cust";
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }
    					
  7. 修改 XML 檔案 (MyXmlFile),以適合您環境的路徑。
  8. 儲存您的專案。在 [偵錯] 功能表上按一下 [開始] 執行您的專案]。
  9. 按一下任何按鈕來從指定的檔案讀取 XML 資料。請注意 XML 資料會出現在格線中。

額外的備忘稿

  • 若要讀取 XML 結構描述,您可以使用 ReadXmlSchema 方法。
  • 若要取得 資料集,而不是以只有 XML 表示的資料保存它拖曳到資料流或檔案,您可以使用 GetXml 方法。

?考

如需詳細資訊按一下面的文件編號,檢視 「 Microsoft 知識庫 」 中 「 文件:
309183? (http://support.microsoft.com/kb/309183/EN-US/ ) 如何使用 Visual C#.NET 保存為 XML 的 ADO.NET 資料集
262450? (http://support.microsoft.com/kb/262450/EN-US/ ) 如何 A C + + 樣本的 ADO 資料錄集 XML 保存性
如需有關 ADO.NET 物件和語法的詳細資訊,請參閱下列 Microsoft.NET Framework 軟體開發套件 (SDK) 說明文件或 MSDN Online:
存取使用 ADO.NET 的資料
http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx)

這篇文章中的資訊適用於:
  • Microsoft ADO.NET 1.1
  • Microsoft ADO.NET 1.0
  • Microsoft Visual C# .NET 2003 標準版
  • Microsoft Visual C# .NET 2002 Standard Edition
關鍵字:?
kbmt kbhowtomaster kbsystemdata KB311566 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:311566? (http://support.microsoft.com/kb/311566/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。