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


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

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

Пример

В данном примере определяется класс с именем Book, создается экземпляр класса и используется XML-сериализация для записи экземпляра в XML-файл.

Код, схожий с этим, доступен также в качестве фрагмента кода IntelliSense. В диспетчере фрагментов кода он находится в XML. Для получения дополнительной информации см. Фрагменты кода.

Public Module XMLWrite

    Sub Main()
        WriteXML()
    End Sub 

    Public Class Book
        Public Title As String 
    End Class 

    Public Sub WriteXML()
        Dim overview As New Book
        overview.Title = "Serialization Overview" 
        Dim writer As New System.Xml.Serialization.XmlSerializer(GetType(Book))
        Dim file As New System.IO.StreamWriter(
            "c:\temp\SerializationOverview.xml")
        writer.Serialize(file, overview)
        file.Close()
    End Sub 
End Module
public class XMLWrite
{

   static void Main(string[] args)
    {
        WriteXML();
    }


    public class Book
    {
        public String title; 
    }


    public static void WriteXML()
    {
        Book overview = new Book();
        overview.title = "Serialization Overview";
        System.Xml.Serialization.XmlSerializer writer = 
            new System.Xml.Serialization.XmlSerializer(typeof(Book));

        var path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "//SerializationOverview.xml";
        System.IO.FileStream file = System.IO.File.Create(path);

        writer.Serialize(file, overview);
        file.Close();
    }
}

Компиляция кода

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

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

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

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

  • Файл существует и является файлом только для чтения (IOException).

  • Путь слишком длинный (PathTooLongException).

  • Диск переполнен (IOException).

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

Если такого файла не существует, этот пример создает новый файл. Если приложению требуется создать файл, оно должно иметь доступ к каталогу для создания файлов (Create). Если файл уже существует, то приложению достаточно иметь лишь доступ для записи файлов (Write), т. е. меньшие привилегии. Безопаснее создавать файл во время развертывания, если это возможно, а также предоставлять доступ Read к отдельному файлу вместо доступа Create к каталогу.

См. также

Задачи

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

Ссылки

StreamWriter

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

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

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