Seriëren van een object naar XML

Ik heb een C# klasse die ik geërfd heb. Ik heb met succes "built" het object. Maar ik moet het object serializeren naar XML. Is er een gemakkelijke manier om dit te doen?

Het lijkt erop dat de klasse is ingesteld voor serialisatie, maar ik'ben niet zeker hoe ik de XML representatie krijg. Mijn klasse definitie ziet er als volgt uit:

[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
{
  ...
}

Hier is wat ik dacht te kunnen doen, maar het werkt niet:

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

Hoe krijg ik de XML representatie van dit object?

Oplossing

Je moet XmlSerializer gebruiken voor XML serialisatie. Hieronder staat een voorbeeld.

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

Om een object te serialiseren, doe:

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

Denk er ook aan dat je een parameterloze constructor nodig hebt om XmlSerializer te laten werken.

Commentaren (1)

Hier is een goede tutorial over hoe dit te doen

Je moet in principe System.Xml.Serialization.XmlSerializer klasse gebruiken om dit te doen.

Commentaren (0)