如何:讀取 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)