Utiliser Visual C# pour sérialiser un objet au format XML

Cet article fournit une méthode sur la sérialisation d’un objet au format XML (Extensible Markup Language) à l’aide de Visual C#.

Version de produit d’origine : Visual Studio
Numéro de la base de connaissances d’origine : 815813

Résumé

La méthode décrite dans cet article est utile pour conserver l’état d’un objet. La méthode est également utile pour cloner un objet en dé sérialisant le XML vers un nouvel objet.

Cet article fait référence aux espaces de noms de bibliothèque de classes Microsoft .NET Framework suivants :

  • System.Xml
  • System.Xml.Serialization

Configuration requise

Cet article suppose que vous êtes familiarisé avec les rubriques suivantes :

  • Visual Studio
  • Connaissance générale du code XML
  • Connaissance générale de Visual C#

Sérialisation XML

La sérialisation est le processus qui consiste à prendre l’état d’un objet et à le rendre persistant d’une certaine manière. Le .NET Framework inclut des objets puissants qui peuvent sérialiser n’importe quel objet au format XML. L’espace System.Xml.Serialization de noms fournit cette fonctionnalité.

Procédez comme suit pour créer une application console qui crée un objet, puis sérialise son état au format XML :

  1. Dans Visual C#, créez un projet Application console.

  2. Dans le menu Projet , sélectionnez Ajouter une classe pour ajouter une nouvelle classe au projet.

  3. Dans la boîte de dialogue Ajouter un nouvel élément , remplacez le nom de la classe par clsPerson.

  4. Sélectionnez Ajouter. Une classe est créée.

  5. Ajoutez le code suivant après l’instruction de classe clsPerson publique.

    public string FirstName;
    public string MI;
    public string LastName;
    
  6. Basculez vers la fenêtre de code pour Program.cs dans Visual Studio.

  7. Dans la void Main méthode , déclarez et créez un instance de la clsPerson classe :

    clsPerson p = new clsPerson();
    
  8. Définissez les propriétés de l’objet clsPerson :

    p.FirstName = "Jeff";
    p.MI = "A";
    p.LastName = "Price";
    
  9. L’espace Xml.Serialization de noms contient une XmlSerializer classe qui sérialise un objet au format XML. Lorsque vous créez un instance de XmlSerializer, vous passez le type de la classe que vous souhaitez sérialiser dans son constructeur :

    System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
    
  10. La Serialize méthode est utilisée pour sérialiser un objet au format XML. Sérialiser est surchargé et peut envoyer la sortie à un TextWriterobjet , Streamou XMLWriter . Dans cet exemple, vous envoyez la sortie à la console :

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

Liste complète du code

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

Vérification

Pour vérifier que votre projet fonctionne, appuyez sur Ctrl+F5 pour exécuter le projet. Un clsPerson objet est créé et rempli avec les valeurs que vous avez entrées. Cet état est sérialisé au format XML. La fenêtre de console affiche le code suivant :

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

Résoudre les problèmes

L’objet Xml.Serialization.XmlSerializer effectue uniquement une sérialisation superficielle. Si vous souhaitez également sérialiser les variables privées d’un objet ou d’objets enfants, vous devez utiliser la sérialisation approfondie.