Udostępnij za pośrednictwem


Serializowanie obiektu do kodu XML przy użyciu języka Visual C#

W tym artykule przedstawiono metodę serializacji obiektu do języka XML (Extensible Markup Language) przy użyciu języka Visual C#.

Oryginalna wersja produktu: Visual Studio
Oryginalny numer KB: 815813

Podsumowanie

Metoda opisana w tym artykule jest przydatna do utrwalania stanu obiektu. Metoda ta jest również przydatna do klonowania obiektu przez cofnięcie serializacji kodu XML z powrotem do nowego obiektu.

W tym artykule opisano następujące przestrzenie nazw biblioteki klas microsoft .NET Framework:

  • System.Xml
  • System.Xml.Serialization

Wymagania

W tym artykule założono, że znasz następujące tematy:

  • Visual Studio
  • Ogólna znajomość kodu XML
  • Ogólna znajomość języka Visual C#

Serializacja XML

Serializacja to proces pobierania stanu obiektu i utrwalania go w jakiś sposób. .NET Framework zawiera zaawansowane obiekty, które mogą serializować dowolny obiekt do kodu XML. Przestrzeń System.Xml.Serialization nazw zapewnia tę możliwość.

Wykonaj następujące kroki, aby utworzyć aplikację konsolową, która tworzy obiekt, a następnie serializuje jego stan na xml:

  1. W języku Visual C# utwórz nowy projekt aplikacji konsoli.

  2. W menu Projekt wybierz pozycję Dodaj klasę , aby dodać nową klasę do projektu.

  3. W oknie dialogowym Dodawanie nowego elementu zmień nazwę klasy na clsPerson.

  4. Wybierz opcję Dodaj. Zostanie utworzona nowa klasa.

  5. Dodaj następujący kod po instrukcji klasy clsPerson publicznej.

    public string FirstName;
    public string MI;
    public string LastName;
    
  6. Przejdź do okna kodu dla Program.cs w programie Visual Studio.

  7. W metodzie zadeklaruj void Main i utwórz wystąpienie clsPerson klasy:

    clsPerson p = new clsPerson();
    
  8. Ustaw właściwości obiektu clsPerson :

    p.FirstName = "Jeff";
    p.MI = "A";
    p.LastName = "Price";
    
  9. Przestrzeń Xml.Serialization nazw zawiera klasę XmlSerializer , która serializuje obiekt do formatu XML. Podczas tworzenia wystąpienia elementu XmlSerializerprzekazujesz typ klasy, którą chcesz serializować do jej konstruktora:

    System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
    
  10. Metoda Serialize służy do serializacji obiektu do kodu XML. Serializacja jest przeciążona i może wysyłać dane wyjściowe do obiektu TextWriter, Streamlub XMLWriter . W tym przykładzie wysyłasz dane wyjściowe do konsoli:

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

Ukończ listę kodu

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();
    }
}

Weryfikacji

Aby sprawdzić, czy projekt działa, naciśnij klawisze CTRL+F5, aby uruchomić projekt. Obiekt clsPerson jest tworzony i wypełniany wprowadzonymi wartościami. Ten stan jest serializowany do xml. W oknie konsoli jest wyświetlany następujący kod:

<?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>

Rozwiązywanie problemów

Obiekt Xml.Serialization.XmlSerializer wykonuje tylko płytką serializację. Jeśli chcesz również serializować zmienne prywatne obiektu lub obiektów podrzędnych, musisz użyć serializacji głębokiej.