24 Ocak 2018 Çarşamba

DataContractSerializer Sınıfı

Giriş
Bu sınıf XMLSerializer ile aynı işi yapıyor. En önemli farkı WCF içinde bulunması. XML'e çevrilecek sınıf XmlRoot, XmlElement gibi anotasyonlar kullanır.

Constructor
Şöyle yaparız.
var serializer = new DataContractSerializer(typeof(MyClass));
Liste için şöyle yaparız.
var serializer = new DataContractSerializer(typeof(List<Animal>));
ReadObject metodu
Şöyle yaparız.
using (FileStream f = new FileStream(<pathtoxml>, FileMode.Open, FileAccess.Read))
{
  DataContractSerializer dcs = new DataContractSerializer(typeof(List<Animal>));
  XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(f,
                                           new XmlDictionaryReaderQuotas());

  List<Animal> listfromxml = (List<Animal>)dcs.ReadObject(reader);
}
WriteObject metodu - XMLWriter
Örnek
Şöyle yaparız.
DataContractSerializer dcs = new DataContractSerializer(typeof(T));
XmlDictionaryWriter xdw = XmlDictionaryWriter.CreateTextWriter(filestream, Encoding.UTF8);
dcs.WriteObject(xdw, obj);
Örnek
Şöyle yaparız.
using (FileStream f = new FileStream(@"...", FileMode.Create, FileAccess.Write))
{
  var serializer = new DataContractSerializer(typeof(List<Animal>));
  XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(f);
  try
  {
    serializer.WriteObject(f, animalList);
    writer.Close();
    f.Close();
  }
  catch (Exception)
  {...}
}







Hiç yorum yok:

Yorum Gönder