Serializácia objektu do XML

Mám triedu C#, ktorú som zdedil. Úspešne som "vytvoril" objekt. Potrebujem však tento objekt serializovať do XML. Existuje nejaký jednoduchý spôsob, ako to urobiť?

Vyzerá to tak, že trieda bola nastavená na serializáciu, ale nie'som si istý, ako získať reprezentáciu XML. Definícia mojej triedy vyzerá takto:

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

Tu je to, čo som si myslel, že by som mohol urobiť, ale nefunguje to:

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

Ako získam reprezentáciu XML tohto objektu?

Riešenie

Na serializáciu XML musíte použiť XmlSerializer. Nižšie je uvedená ukážka.

 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
     }
 }
Komentáre (7)

Ak chcete serializovať objekt, vykonajte:

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

Nezabudnite tiež, že na to, aby XmlSerializer fungoval, potrebujete konštruktor bez parametrov.

Komentáre (1)

Tu je dobrý návod, ako to urobiť

V podstate by ste na to mali použiť triedu System.Xml.Serialization.XmlSerializer.

Komentáre (0)