共用方式為


如何:讀取 XML 檔案的物件資料 (C# 和 Visual Basic)

這個範例使用 XmlSerializer 類別,讀取先前寫入 XML 檔案的物件資料。

範例

這個程式碼範例也可做為 IntelliSense 程式碼片段。 在程式碼片段選擇器中,這個程式碼片段位於 [XML] 中。 如需詳細資訊,請參閱程式碼片段

Public Class Book
    Public Title As String 
End Class 

Public Sub ReadXML()
    Dim reader As New System.Xml.Serialization.XmlSerializer(GetType(Book))
    Dim file As New System.IO.StreamReader(
        "c:\temp\SerializationOverview.xml")
    Dim overview As Book
    overview = CType(reader.Deserialize(file), Book)
    Console.WriteLine(overview.Title)
End Sub
public class Book
{
    public String title;
}       

public void ReadXML()
{
    // First write something so that there is something to read ... 
    var b = new Book { title = "Serialization Overview" };
    var writer = new System.Xml.Serialization.XmlSerializer(typeof(Book));
    var wfile = new System.IO.StreamWriter(@"c:\temp\SerializationOverview.xml");
    writer.Serialize(wfile, b);
    wfile.Close();

    // Now we can read the serialized book ...
    System.Xml.Serialization.XmlSerializer reader = 
        new System.Xml.Serialization.XmlSerializer(typeof(Book));
    System.IO.StreamReader file = new System.IO.StreamReader(
        @"c:\temp\SerializationOverview.xml");
    Book overview =  (Book)reader.Deserialize(file);
    file.Close();

    Console.WriteLine(overview.title);

}

編譯程式碼

使用包含序列化資料的檔案名稱來取代檔案名稱 "c:\IntroToVB.xml"。 如需序列化資料的詳細資訊,請參閱 如何:將物件資料寫入 XML 檔案 (C# 和 Visual Basic)

類別必須具有不含參數的公用建構函式。

只還原序列化公用屬性和欄位。

穩固程式設計

下列情形可能會造成例外狀況 (Exception):

  • 序列化的類別不具有公用、無參數的建構函式。

  • 檔案中的資料不代表來自被還原序列化的類別的資料。

  • 檔案不存在 (IOException)。

安全性

一定要驗證輸入值,並且不可還原序列化來自未受信任來源的資料。 重新建立的物件會以還原序列化該物件的程式碼的使用權限,在本機電腦上執行。 在應用程式中使用這些資料之前,請先驗證所有輸入值。

請參閱

工作

如何:將物件資料寫入 XML 檔案 (C# 和 Visual Basic)

參考

StreamWriter

概念

C# 程式設計手冊

其他資源

序列化 (C# 和 Visual Basic)

Visual Basic 程式設計手冊