C# ile XML Oluşturma, Okuma, Ekleme, Güncelleme ve Silme İşlemleri

XML Nedir?

Türkçe açılımı Genişletilebilir İşaretleme Dili anlamına gelen XML (eXtensible Markup Language), insanlar ve bilgi işlem sistemleri için kolayca okunabilecek veri dökümanı yani veri tabanı oluşturmaya yarayan, W3C tarafından tanımlanmış bir standarttır. XML dosya tipinin en önemli özelliği veri saklama görevinin yanı sıra farklı sistemlerle oluşturulmuş programlar arasından veri alışverişi konusunda entegrasyon görevi üstlenmesidir. Kısacası XML ile farklı platformlar (masaüstü, web, mobil gibi) için farklı programlama dilleri (asp.net, php, java, c# gibi) ile yazılan uygulamalar arasında çok kolaylıkla veri alışverişi yapabilirsiniz.

XML Kullanımı

Günümüzde birçok yazılım, diğer yazılımlarla veri alışverişini XML formatı üzerinden yapmaktadır. Ayrıca XML’i esas format olarak kullanan uygulamalara ve veri tabanlarına rastlamakta mümkündür. Microsoft’un geliştirdiği .NET teknolojisinde kullanılan DataSet nesneleri XML ortamındadır. Ayrıca XML, ofis uygulamalarının alt yapısı haline getirilmiştir. İçeriğin, doküman yapısının ve şeklin birbirinden ayrı ele alınması XML’i İçerik yönetim sistemlerinin ideal formatı haline getirmiştir.

XML Oluşturma

Xml dosya aslında geliştirilmiş bir not defteridir. XML dosyası oluşturmak için bir metin dosyası oluşturup uzantısını .xml olarak kaydetmeniz yeterlidir. Daha sonrasında oluşturduğunuz xml dosyasını aşağıda ki örnekte olduğu gibi belirli bir formatta düzenlememiz gerekmektedir.

Xml Markup Langue bir dil oldugu için her zaman, “< >” tagların içine yazılır. XML yapı olarak HTML’deki gibi başlık ve gövde olmak üzere ikiye ayrılır. Dosyanın en üst tarafına yani başlık olarak nitelendirdiğimiz alana XML yapımızın versiyonun ve desteklediği karakter dilini gibi özelliklerini belirtmek amacıyla kullanırız.

<?xml version="1.0" encoding="utf-8" ?>

XML dosyamızın gövde kısmı ise Root ve Element dediğimiz iki alandan oluşur. Root; veri tabanınızda ki ana kümeyi temsil eder. (Sql deki tablolar gibi düşünebilirsiniz.) Element ise veri tabanınızda ki alt kümeleri temsil eder. (Sql deki sütunlar gibi düşünebilirsiniz.) Element’de kendi içerisinde verinize göre şekillendirebileceğiniz bölümlerden oluşur. (Sql deki satırlar gibi düşünebilirsiniz.) Burada istediğiniz kadar Element yani veri ekleyebilirsiniz. Her eklediğiniz element yeni bir veriyi temsil eder. Element yapısı atribute dediğimiz bir kimliklendirme yapısınada sahiptir. Bu şekilde her bir elemente bir id ataması yaparak da özelleştirebilirsiniz. Son olarak Root ve Element diye adlandırdığımız yapıyı veri tabanınıza uygun istediğiniz anahtar kelimeleri kullanarak düzenleyebilirsiniz.

xml-nedir

Örnek XML Dosyası

Bu örneğimiz de telefon rehberini temsil eden örnek bir XML dosyası oluşturacağız.

<?xml version="1.0" encoding="UTF-8"?>

<IsRehberim>
  <rehber id="0">
    <kisi_Adı>Fatih Alkan</kisi_Adı>
    <kisi_Tel>0554*******</kisi_Tel>
    <kisi_EMail>fatih@alkanfatih.com</kisi_EMail>
  </rehber>

  <rehber id="1">
    <kisi_Adı>Anıl Kahraman</kisi_Adı>
    <kisi_Tel>0532*******</kisi_Tel>
    <kisi_EMail>anil@anilkahraman.com</kisi_EMail>
  </rehber>

  <rehber id="2">
    <kisi_Adı>Seyfi Genc</kisi_Adı>
    <kisi_Tel>0553*******</kisi_Tel>
    <kisi_EMail>seyfi@seyfigenc.com</kisi_EMail>
  </rehber>

  <rehber id="3">
    <kisi_Adı>Osman Dağasan</kisi_Adı>
    <kisi_Tel>0555*******</kisi_Tel>
    <kisi_EMail>osman@osmandagasan.com</kisi_EMail>
  </rehber>
</IsRehberim>

C# ile XML Veri Okuma (XML Read)

private static void XMLRead()
{
   XDocument xDoc = XDocument.Load(@"..\..\Data\rehber.xml"); 
   //Xml dosyamıza erişip yükleme işlemini gerçekleştiriyoruz.

   XElement rootElement = xDoc.Root; 
   //Oluşturduğumuz Root elementine XML dökümanında ki root elementini seçmesini sağlıyoruz.

   String AD, Email, Tel, ID; 
   //Okunan element deki veriler için değişken tanımlıyoruz.

   foreach (XElement rehberimiz in rootElement.Elements()) 
   //Foreach ile okudumuz root tagları arasındaki Rehber Elementi içinde dönüyoruz ver verileri okumaya başlıyoruz.
   {
      ID = rehberimiz.Attribute("id").Value;
      //Rehber elementinin atribute id sini al.
      AD = rehberimiz.Element("kisi_Adı").Value;
      //Rehber elementimize ait kişi_Adı elementin değerini al.
      Email = rehberimiz.Element("kisi_EMail").Value;
      //Rehber elementimize ait kisi_EMail elementin değerinial.
      Tel = rehberimiz.Element("kisi_Tel").Value;
      //Rehber elementimize ait kisi_Tel elementin değerini al.
      Console.Write("ID: " + ID + " AD: " + AD + " Email: " + Email + " Tel: " + Tel); 
      //Aldığımız değerleri değişken üzerinden ekrana yazdır.
   }
}

C# ile XML Veri Ekleme (XML Insert)

private static void XMLInsert()
{
   XDocument xDoc = XDocument.Load(@"..\..\Data\rehber.xml");
   //Xml dosyamıza erişip yükleme işlemini gerçekleştiriyoruz.

   XElement rootElement = xDoc.Root;
   //Oluşturduğumuz Root elementine XML dökümanında ki root elementini seçmesini sağlıyoruz.

   XElement newElement = new XElement("rehber");
   //Yeni bir element oluşturuyoruz.

   XAttribute idAttribute = new XAttribute("id", "4");
   //Elementimize attribute yani Id ataması yapıyoruz.

   XElement adiElement = new XElement("kisi_Adı", "Ömer Şakir");
   XElement telefonElement = new XElement("kisi_Tel", "0555*******");
   XElement emailElement = new XElement("kisi_EMail", "omer@hotmail.com");
   //Elementlerimizin verilerini oluşturmaya devam ediyoruz...

   newElement.Add(idAttribute, adiElement, telefonElement, emailElement); 
   //Verilerimizi rehber elementimizin içine sıralı bir şekilde ekliyoruz.

   rootElement.Add(newElement); 
   //Oluşturduğumuz yeni elementi root tagının içine ekliyoruz.

   xDoc.Save(@"..\..\Data\rehber.xml");
   //Yaptığımız işlemi kayıt ediyoruz.
}

C# ile XML Veri Güncelleme (XML Update)

private static void XMLUpdate()
{
   XDocument xDoc = XDocument.Load(@"..\..\Data\rehber.xml");
   //Xml dosyamıza erişip yükleme işlemini gerçekleştiriyoruz.

   XElement rootElement = xDoc.Root;
   //Oluşturduğumuz Root elementine XML dökümanında ki root elementini seçmesini sağlıyoruz.

   foreach (XElement rehberimiz in rootElement.Elements())
   //Root Tagımız içindeki rehber Elementlerinde dönmeye başlıyoruz.
   {

      if (rehberimiz.Attribute("id").Value == "1") 
      //attributes id si 1 olan veri yakalıyoruz Xml Dosyamızda Fatih Olan kişi.
      {
         rehberimiz.Element("kisi_Adı").Value = "Selim"; 
         //attributes id si 1 olan anıl adlı kişiyi selim yap.
         break; 
         //Dongüden çık.
       }
    }
    xDoc.Save(@"..\..\Data\rehber.xml");
    //Yaptığımız işlemi kayıt ediyoruz.
}

C# ile XML Veri Silme (XML Delete)

private static void XMLDelete()
{
   XDocument xDoc = XDocument.Load(@"..\..\Data\rehber.xml");
   //Xml dosyamıza erişip yükleme işlemini gerçekleştiriyoruz.

   XElement rootElement = xDoc.Root;
   //Oluşturduğumuz Root elementine XML dökümanında ki root elementini seçmesini sağlıyoruz.

   foreach (XElement rehberimiz in rootElement.Elements())
   //Root Tagımız içindeki rehber Elementlerinde dönmeye başlıyoruz...
   {
       if (rehberimiz.Attribute("id").Value == "2") 
       //attributes id si 2 olan elementi yakalıyoruz Xml Dosyamızda Seyfi Olan kişi...
       {
           rehberimiz.Remove();
           //attributes id si 2 olan elementi Remove metodu ile siliyoruz.
       }
   }
   xDoc.Save(@"..\..\Data\rehber.xml");
   //Yaptığımız işlemi kayıt ediyoruz.
}

6 comments

  1. Üstad güncelle ve sil işlemlerinde save yapmıyorsun. Ekle işleminde ki gibi save olmalı. Unutulmuş muhtemelen.

    1. Doğrudur teşekkür ederim. Çok eskiden yazmıştım yazıyı sanırsam güncellemem lazım 🙂

  2. Hocam elinize emeğinize sağlık. Yıl 2020 ancak nasıl güzel bir eser bırakmışsınız ki hala işime yarıyor

Bir Cevap Yazın