Verwenden von Visual C# zum Serialisieren eines Objekts in XML

Dieser Artikel enthält eine Methode zum Serialisieren eines Objekts in Extensible Markup Language (XML) mithilfe von Visual C#.

Ursprüngliche Produktversion:   Visual Studio
Ursprüngliche KB-Nummer:   815813

Zusammenfassung

Die in diesem Artikel beschriebene Methode ist nützlich, um den Status eines Objekts beizubehalten. Die Methode eignet sich auch zum Klonen eines Objekts, indem der XML-Code auf ein neues Objekt zurück serialisiert wird.

Dieser Artikel bezieht sich auf die folgenden Namespaces der Microsoft .NET Framework-Klassenbibliothek:

  • System.Xml
  • System.Xml.Serialization

Anforderungen

In diesem Artikel wird davon ausgegangen, dass Sie mit den folgenden Themen vertraut sind:

  • Visual Studio
  • Allgemeine Vertrautheit mit XML
  • Allgemeine Vertrautheit mit Visual C #

XML-Serialisierung

Serialisierung ist der Vorgang, bei dem der Status eines Objekts abgerufen und in irgendeiner Weise beibehalten wird. Die .NET Framework enthält leistungsstarke Objekte, die jedes Objekt in XML serialisieren können. Der System.Xml.Serialization Namespace stellt diese Funktion bereit.

Führen Sie die folgenden Schritte aus, um eine Konsolenanwendung zu erstellen, die ein Objekt erstellt, und serialisiert dann den Status in XML:

  1. Erstellen Sie in Visual C# ein neues Konsolenanwendungsprojekt.

  2. Wählen Sie im Menü Project die Option "Klasse hinzufügen" aus, um dem Projekt eine neue Klasse hinzuzufügen.

  3. Ändern Sie im Dialogfeld Neues Element hinzufügen den Namen der Klasse in clsPerson.

  4. Klicken Sie auf Hinzufügen. Eine neue Klasse wird erstellt.

  5. Fügen Sie den folgenden Code nach der anweisung der öffentlichen Klasse clsPerson hinzu.

    public string FirstName;
    public string MI;
    public string LastName;
    
  6. Wechseln Sie zum Codefenster für "Program.cs" in Visual Studio.

  7. void MainDeklarieren und erstellen Sie in der Methode eine Instanz der clsPerson Klasse:

    clsPerson p = new clsPerson();
    
  8. Legen Sie die Eigenschaften des clsPerson Objekts fest:

    p.FirstName = "Jeff";
    p.MI = "A";
    p.LastName = "Price";
    
  9. Der Xml.Serialization Namespace enthält eine XmlSerializer Klasse, die ein Objekt in XML serialisiert. Wenn Sie eine Instanz von XmlSerializer erstellen, übergeben Sie den Typ der Klasse, die Sie serialisieren möchten, in den Konstruktor:

    System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
    
  10. Die Serialize Methode wird verwendet, um ein Objekt in XML zu serialisieren. Serialisierung ist überladen und kann die Ausgabe an ein TextWriter Stream , oder Objekt XMLWriter senden. In diesem Beispiel senden Sie die Ausgabe an die Konsole:

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

Vollständige Codeauflistung

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

Überprüfung

Drücken Sie STRG+F5, um das Projekt auszuführen, um zu überprüfen, ob das Projekt funktioniert. Ein clsPerson Objekt wird erstellt und mit den eingegebenen Werten aufgefüllt. Dieser Zustand wird in XML serialisiert. Im Konsolenfenster wird der folgende Code angezeigt:

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

Problembehandlung

Das Xml.Serialization.XmlSerializer Objekt führt nur eine flache Serialisierung durch. Wenn Sie auch die privaten Variablen eines Objekts oder untergeordneter Objekte serialisieren möchten, müssen Sie die umfassende Serialisierung verwenden.