by

C#’ta XML Serialization ve Deserialization

Kısaca serileştirmeyi tanımlayacak olursak; serileştirme , elimizdeki mevcut nesne(ler)i istenilen formata getirmeye yarıyor diyebiliriz. Bunlardan en bilinenleri XML Serileştirme , JSON Serileştirme , Binary Serileştirme. (Kendinize yeni bir format geliştirirseniz o şekilde de serileştirebilirsiniz.)

Herneyse konumuza dönecek olursak XML DOM’daki gibi tek tek appendNode , insertElement tarzındaki methodları kullanmadan nesnelerimizi direk olarak nasıl XML formatına dönüştürürüz daha doğrusu bu işi C#’ta basit olarak nasıl yaparız ondan bahsedeceğim. (Not: Java’da benzer işlemi yapmak istiyorsanız JAXB sizin için yararlı olacaktır.)

Öncelikle serileştirmek istediğim nesnelerin türetileceği sınıfı yazıyorum. Kişilere ait belirli nitelikleri tutan Person adında bir sınıfım var.

public class Person { public string name { get; set; } public string cell_phone { get; set; } public string hometown { get; set; } }

Şimdi ise elimde bulunan birden çok kişi nesnesini bir listede tutacağım ve bu listeyi nasıl serileştireceğimizi göstereceğim. İlk olarak listemizin tanımını yapıp , kişileri bu listeye ekliyorum.

List personList = new List(); personList.Add(new Person { name = “Robert de Niro”, cell_phone = “5*********”, hometown = “Los Angeles , LA” }); personList.Add(new Person { name = “Al Pacino”, cell_phone = “+1***********”, hometown = “New York” }); personList.Add(new Person { name = “Morgan Freeman”, cell_phone = “+1***********”, hometown = “Chicago” });

Sıra geldi serileştirme işlemini yapan kod kesimini yazmaya. Bunun için System.Xml.Serialization namespace’inden yararlanacağız ve bu namespace te yer alan XmlSerializer sınıfını kullanacağız.

XmlSerializer serializer = new XmlSerializer(typeof(List)); TextWriter writer = new StreamWriter(“datas.xml”); serializer.Serialize(writer, personList);

Nesnelerimiz belirttiğimiz adreste bulunan XML dosyasına yazılmış bulunuyor.

[![](http://www.onurbaysan.com/blog/wp-content/uploads/2011/08/serial-300×153.png “serial”)](http://www.onurbaysan.com/blog/wp-content/uploads/2011/08/serial.png)

Şimdi de bu işlemin tam tersini yani mevcut XML’den nesne elde etme işlemi de benzer şekilde birkaç satır kod ile yapılabiliyor.

XmlSerializer serializer = new XmlSerializer(typeof(List)); TextReader reader = new StreamReader(“datas.xml”); personList = (List)serializer.Deserialize(reader);