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 :
Dans Visual C#, créez un projet d’application console.
Dans le menu Projet , sélectionnez Ajouter une classe pour ajouter une nouvelle classe au projet.
Dans la boîte de dialogue Ajouter un nouvel élément , remplacez le nom de la classe par clsPerson.
Sélectionnez Ajouter. Une classe est créée.
Ajoutez le code suivant après l’instruction de classe
clsPerson
publique.public string FirstName; public string MI; public string LastName;
Basculez vers la fenêtre de code pour Program.cs dans Visual Studio.
Dans la
void Main
méthode, déclarez et créez une instance de laclsPerson
classe :clsPerson p = new clsPerson();
Définissez les propriétés de l’objet
clsPerson
:p.FirstName = "Jeff"; p.MI = "A"; p.LastName = "Price";
L’espace
Xml.Serialization
de noms contient uneXmlSerializer
classe qui sérialise un objet au format XML. Lorsque vous créez une instance deXmlSerializer
, vous passez le type de la classe à sérialiser dans son constructeur :System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
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 unTextWriter
objetStream
XMLWriter
. 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.