Ein Objekt in XML serialisieren

Ich habe eine C#-Klasse, die ich geerbt habe. Ich habe erfolgreich "gebaut" das Objekt. Aber ich muss das Objekt in XML serialisieren. Gibt es eine einfache Möglichkeit, dies zu tun?

Es sieht so aus, als ob die Klasse für die Serialisierung eingerichtet wurde, aber ich bin mir nicht sicher, wie ich die XML-Darstellung erhalten kann. Meine Klassendefinition sieht wie folgt aus:

[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 ist, was ich dachte, ich könnte tun, aber es funktioniert nicht:

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

Wie bekomme ich die XML-Darstellung dieses Objekts?

Lösung

Für die XML-Serialisierung müssen Sie XmlSerializer verwenden. Unten finden Sie ein Beispiel-Snippet.

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

Um ein Objekt zu serialisieren, tun Sie dies:

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

Denken Sie auch daran, dass Sie einen parameterlosen Konstruktor benötigen, damit XmlSerializer funktioniert.

Kommentare (1)

Hier finden Sie eine gute Anleitung, wie man das macht

Grundsätzlich sollten Sie dazu die Klasse System.Xml.Serialization.XmlSerializer verwenden.

Kommentare (0)