Partager via


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

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

Version du produit d’origine : Visual Studio
Numéro de 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 CODE 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

Spécifications

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 de prise de l’état d’un objet et de sa persistance 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 en XML :

  1. Dans Visual C#, créez un projet d’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 une 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 une instance de XmlSerializer, vous passez le type de la classe à 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 une sortie à un objet ou un TextWriterobjetStreamXMLWriter. Dans cet exemple, vous envoyez la sortie à la console :

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

Listing du code complet

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é en 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ésolution des 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’un objet enfant, vous devez utiliser la sérialisation approfondie.