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

参考

StreamWriter

概念

C# 编程指南

其他资源

序列化(C# 和 Visual Basic)

Visual Basic 编程指南