如何:从 XML 文件读取对象数据(C# 和 Visual Basic)
此示例使用 XmlSerializer 类读取以前写入 XML 文件的对象数据。
示例
此代码示例也可用作 IntelliSense 代码段。 在代码段选择器中,此代码示例位于**“XML”**中。 有关更多信息,请参见如何:插入 IntelliSense 代码段。
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()
{
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 = new Book();
overview = (Book)reader.Deserialize(file);
Console.WriteLine(overview.title);
}
编译代码
用包含序列化数据的文件的名称替代文件名“c:\IntroToVB.xml”。 有关序列化数据的更多信息,请参见 如何:将对象数据写入 XML 文件(C# 和 Visual Basic)。
该类必须具有无参数的公共构造函数。
只有公共属性和字段被反序列化。
可靠编程
以下情况可能会导致异常:
正被序列化的类不具有无参数的公共构造函数。
文件中的数据不表示来自要被反序列化的类的数据。
该文件不存在 (IOException)。
安全性
应始终验证输入内容,且决不对来自不受信任源的数据进行反序列化。 重新创建的对象在本地计算机上运行,其权限与将其反序列化的代码的权限相同。 在应用程序中使用输入的数据之前,需验证所有的输入内容。
请参见
任务
如何:将对象数据写入 XML 文件(C# 和 Visual Basic)