Sérialiser un objet en XML

J'ai une classe C# dont j'ai hérité. J'ai réussi à "construire&quot ; l'objet. Mais j'ai besoin de sérialiser l'objet en XML. Existe-t-il un moyen simple de le faire ?

Il semble que la classe ait été configurée pour la sérialisation, mais je ne sais pas comment obtenir la représentation XML. La définition de ma classe ressemble à ceci :

[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.domain.com/test")]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.domain.com/test", IsNullable = false)]
public partial class MyObject
{
  ...
}

Voici ce que je pensais pouvoir faire, mais cela ne fonctionne pas :

MyObject o = new MyObject();
// Set o properties
string xml = o.ToString();

Comment puis-je obtenir la représentation XML de cet objet ?

Solution

Vous devez utiliser XmlSerializer pour la sérialisation XML. Vous trouverez ci-dessous un exemple d'extrait.

 XmlSerializer xsSubmit = new XmlSerializer(typeof(MyObject));
 var subReq = new MyObject();
 var xml = "";

 using(var sww = new StringWriter())
 {
     using(XmlWriter writer = XmlWriter.Create(sww))
     {
         xsSubmit.Serialize(writer, subReq);
         xml = sww.ToString(); // Your XML
     }
 }
Commentaires (7)

Pour sérialiser un objet, faites :

 using (StreamWriter myWriter = new StreamWriter(path, false))
 {
     XmlSerializer mySerializer = new XmlSerializer(typeof(your_object_type));
     mySerializer.Serialize(myWriter, objectToSerialize);
 }

Rappelez-vous également que pour que XmlSerializer fonctionne, vous avez besoin d'un constructeur sans paramètre.

Commentaires (1)

Voici un bon tutoriel sur la manière de procéder

Pour ce faire, vous devez utiliser la classe System.Xml.Serialization.XmlSerializer.

Commentaires (0)