BT Profesyonelleri ve Kullanıcılar için ipuçları
C# Telnet Client

C# ile Serialization (Bir Sınıfı XML Dosyasına Dönüştürme) ve Deserialization (XML Dosyasından Mevcut Sınıfa Veri Çekme) İşlemleri

Bu yazımızda C#’ta XmlSerializer sınıfını kullanarak serialization (sınıfı XML formatına dönüştürme) ve deserialization (XML formatındaki veriyi sınıfa dönüştürme) işlemlerini inceleyeceğiz. Bu sınıfı kullanabilmemiz için “System.Xml.Serialization” referansını eklememiz gerekiyor.

using System.Xml.Serialization;

Örnek kodlarımızla işe başlayalım.

Bir Sınıfı XML Formatına Dönüştürme

Şimdi örnek bir sınıf oluşturalım

private class Personel
{
    public string Ad { get; set; }
    public string Soyad { get; set; }
}

Sınıfımızı türetip veriyi oluşturalım

Personel personel = new Personel();
personel.Ad = "Serdar";
personel.Soyad = "Kardan";
var serializer = new XmlSerializer(personel.GetType()); // serialization işlemi için XmlSerializer
        
using (var writer = new StreamWriter(@"D:\personel.xml")) // XML dosyamızı oluşturmak için StreamWriter nesnemizi türetiyoruz.
        {
            serializer.Serialize(writer, personel); // Yukarıda türetmiş olduğumuz XmlSerializer nesnesinin Serialize metodunu kullanarak sınıfımızı XML formatına dönüştürüyoruz ve dosyaya yazıyoruz.
        }

Oluşacak XML dosyasının içeriği aşağıdaki gibi olacaktır:

<Personel xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance mlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Ad>Serdar</Ad>
  <Soyad>Kardan</Soyad>
</Personel>

XML Dosyasını Sınıfa Dönüştürme

var xml = new XmlSerializer(typeof(Personel));        

Personel emptyPersonel = new Personel(); // Boş nesnemizi türetiyoruz

using (StreamReader sr = new StreamReader(@"D:\personel.xml")) // XML dosyamızı okuyacak olan sınıfımızı türetiyoruz
{
     emptyPersonel = (Personel)xml.Deserialize(sr); // Boş nesnemize XML dosyasından okuduğumuz veriyi yazıyoruz
}

Personel türündeki boş sınıfımıza XML verisini yazmış olduk.

Örnek proje dosyasını indirmek için lütfen tıklayınız.

Bir yorum ekleyin

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir