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 :
Dans Visual C#, créez un projet 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 un 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 un instance deXmlSerializer
, 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());
La
Serialize
méthode est utilisée pour sérialiser un objet au format XML. Sérialiser est surchargé et peut envoyer la sortie à unTextWriter
objet ,Stream
ouXMLWriter
. 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.