Imam razred C#, ki sem ga podedoval. Objekt sem uspešno zgradil. Vendar moram objekt serializirati v XML. Ali obstaja enostaven način za to?
Zdi se, da je bil razred pripravljen za serializacijo, vendar ne vem, kako dobiti predstavitev XML. Definicija mojega razreda je videti takole:
[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
{
...
}
Mislil sem, da bi lahko naredil tole, vendar to ne deluje:
MyObject o = new MyObject();
// Set o properties
string xml = o.ToString();
Kako dobim predstavitev XML tega predmeta?
Za serializacijo XML morate uporabiti XmlSerializer. Spodaj je prikazan vzorec.
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
}
}
Če želite objekt serializirati, naredite naslednje:
using (StreamWriter myWriter = new StreamWriter(path, false))
{
XmlSerializer mySerializer = new XmlSerializer(typeof(your_object_type));
mySerializer.Serialize(myWriter, objectToSerialize);
}
Prav tako ne pozabite, da za delovanje programa XmlSerializer potrebujete konstruktor brez parametrov.
Tukaj je dober priročnik o tem, kako to storiti
V osnovi morate za to uporabiti razred System.Xml.Serialization.XmlSerializer
.