Сериализация объекта в XML с помощью Visual C#

В этой статье представлен метод сериализации объекта в XML с помощью Visual C#.

Оригинальная версия продукта: Visual Studio
Исходный номер базы знаний: 815813

Сводка

Метод, описанный в этой статье, полезен для сохранения состояния объекта. Метод также полезен для клонирования объекта путем десериализации XML-кода обратно в новый объект.

В этой статье рассматриваются следующие пространства имен библиотеки классов Microsoft платформа .NET Framework:

  • System.Xml
  • System.Xml.Serialization

Требования

В этой статье предполагается, что вы знакомы со следующими разделами:

  • Visual Studio
  • Общее знакомство с XML
  • Общее знакомство с Visual C#

Сериализация XML

Сериализация — это процесс принятия состояния объекта и его сохранения каким-то образом. Платформа .NET Framework включает в себя мощные объекты, которые могут сериализовать любой объект в XML. Пространство System.Xml.Serialization имен предоставляет эту возможность.

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

  1. В Visual C# создайте проект консольного приложения.

  2. В меню Проект выберите Добавить класс , чтобы добавить новый класс в проект.

  3. В диалоговом окне Добавление нового элемента измените имя класса на clsPerson.

  4. Нажмите Добавить. Создается новый класс.

  5. Добавьте следующий код после оператора public class clsPerson .

    public string FirstName;
    public string MI;
    public string LastName;
    
  6. Переключитесь в окно кода для Program.cs в Visual Studio.

  7. В методе void Main объявите и создайте экземпляр clsPerson класса :

    clsPerson p = new clsPerson();
    
  8. Задайте свойства clsPerson объекта:

    p.FirstName = "Jeff";
    p.MI = "A";
    p.LastName = "Price";
    
  9. Пространство Xml.Serialization имен содержит XmlSerializer класс, который сериализует объект в XML. При создании экземпляра XmlSerializerпередается тип класса, который требуется сериализовать, в его конструктор:

    System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
    
  10. Метод Serialize используется для сериализации объекта в XML. Сериализация перегружена и может отправлять выходные TextWriterданные в объект , Streamили XMLWriter . В этом примере выходные данные отправляются в консоль:

    x.Serialize(Console.Out,p);
    Console.WriteLine();
    Console.ReadLine();
    

Полный список кода

using System;

public class clsPerson
{
    public  string FirstName;
    public  string MI;
    public  string LastName;
}

class class1
{
    static void Main(string[] args)
    {
        clsPerson p=new clsPerson();
        p.FirstName = "Jeff";
        p.MI = "A";
        p.LastName = "Price";
        System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
        x.Serialize(Console.Out, p);
        Console.WriteLine();
        Console.ReadLine();
    }
}

Проверки

Чтобы убедиться, что проект работает, нажмите клавиши CTRL+F5, чтобы запустить проект. Объект clsPerson создается и заполняется введенными значениями. Это состояние сериализуется в XML. В окне консоли отображается следующий код:

<?xml version="1.0" encoding="IBM437"?>
<clsPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <FirstName>Jeff</FirstName>
    <MI>A</MI>
    <LastName>Price</LastName>
</clsPerson>

Устранение неполадок

Объект Xml.Serialization.XmlSerializer выполняет только неглубокую сериализацию. Если вы также хотите сериализовать частные переменные объекта или дочерних объектов, необходимо использовать глубокую сериализацию.