Bir nesneyi XML'e serileştirme

Miras aldığım bir C# sınıfım var. Nesneyi başarılı bir şekilde "inşa" ettim. Ancak nesneyi XML'e serileştirmem gerekiyor. Bunu yapmanın kolay bir yolu var mı?

Sınıf serileştirme için ayarlanmış gibi görünüyor, ancak XML gösterimini nasıl alacağımdan emin değilim. Sınıf tanımım şu şekilde görünüyor:

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

İşte yapabileceğimi düşündüğüm şey, ama işe yaramıyor:

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

Bu nesnenin XML temsilini nasıl elde edebilirim?

Çözüm

XML serileştirme için XmlSerializer kullanmanız gerekir. Aşağıda örnek bir snippet bulunmaktadır.

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

Bir nesneyi serileştirmek için şunu yapın:

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

Ayrıca XmlSerializer'ın çalışması için parametresiz bir yapıcıya ihtiyacınız olduğunu unutmayın.

Yorumlar (1)

İşte bunun nasıl yapılacağına dair iyi bir eğitim

Bunu yapmak için temel olarak System.Xml.Serialization.XmlSerializer sınıfını kullanmalısınız.

Yorumlar (0)