Поделиться через


Практическое руководство. Чтение данных объекта из XML-файла (C# и Visual Basic)

В этом примере производится чтение данных объекта, которые были предварительно записаны в XML-файл с помощью класса XmlSerializer.

Пример

Данный пример кода доступен также в качестве фрагмента кода 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).

У класса должен быть открытый конструктор без параметров.

Десериализуются только общие свойства и поля.

Отказоустойчивость

При следующих условиях возможно возникновение исключения.

  • В сериализованном классе нет открытого конструктора без параметров.

  • Данные в файле не являются данными из класса, который был десериализован.

  • Файл не существует (IOException).

Безопасность

Всегда следует проверять входные данные и никогда не стоит десериализовывать данные из непроверенных источников. Созданный заново объект выполняется на локальном компьютере с разрешениями кода, который его десериализовал. Следует проверять все входные данные перед использованием их в приложении.

См. также

Задачи

Практическое руководство. Запись данных объекта в XML-файл (C# и Visual Basic)

Ссылки

StreamWriter

Основные понятия

Руководство по программированию на C#

Другие ресурсы

Сериализация (C# и Visual Basic)

Руководство по программированию на Visual Basic