C# Dataset kullanarak XML ile çalışmak

  • 30.09.2015
  • M.Tayyip Yetiş
  • .Net Framework

xml işlemleriMerhaba arkadaşlar bu makalede basitliği ve pratikliğiyle veri depolama ve transferinde vazgeçilmez olan XML teknolojisinin kolay kullanım yöntemlerinden birini anlatacağım. Normalde XML içindeki verilere erişim için System.Xml namespace’i altında iş gören bir çok sınıf bulunmakta fakat bunlar çeşitli durumlarda işimize yaramasına rağmen XML’in veri kaynağı olarak kullanılmasında çok ilkel kalmaktadır. Örneğin biz Gridview ya da Repeater gibi kontrollerde ya da MVC ile listeleme yaparken veri kaynağı olarak veritabanı yerine xml kullanmayı tercih edebiliriz bu gibi durumlarda Dataset kullanmak oldukça faydalı olacaktır.

Bu sınıf ile bir xml dosyasını rahatlıkla okuyabilir bir tabloya dönüştürebilir ve satırları arasında kısıtlamalar olmadan gezebilirsiniz üstelik yeni satır ekleyebilir değiştirebilir ya da silebilirsiniz tüm bunları yapmak için 3-4 satırlık kod blokları yeterlidir aynı zamanda xml’i okuttuğunuz bir dataset’i direkt olarak herhangi bir veri kontrolüne DataSource olarak verebilirsiniz. Aşağıda örnek kullanımı görelim

öncelikle projenize aşağıdaki referansı eklemelisiniz.

using System.Data;
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("\\") + "Models\\veri.xml");
GridView1.DataSource = ds.Tables[0];
GridView1.DataBind();

yukarıdaki örnekte bir DataSet nesnesi oluşturduk xml dosyamızın yolunu parametre olarak verdik ve otomatik olarak oluşturulan 0 indexli tabloyu GridView1 nesnemize veri kaynağı olarak bağladık.

DataRow dr = ds.Tables[0].NewRow();
dr["urunID"] = "15";
dr["urunAdi"] = "Fotoğraf makinası";
dr["urunFiyat"] = "1200";
ds.Tables[0].Rows.Add(dr);

yukarıda ise yeni bir DataRow nesnei türetip sütunlara değerlerini verdik ve tablo içine yeni satır olarak ekledik.

DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("\\") + "Models\\veri.xml");
ds.Tables[0].Rows[0][0] = "değişen deger";

yukarıdaki örnekte belirlenen satır ve sütundaki değeri değiştirdik.

DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("\\") + "Models\\veri.xml");
ds.Tables[0].Rows[0].Delete();

bu örnekte de belirtilen satırı sildik. Aşağıdakş kod ile de yaptığımız değişiklikleri tekrar xml dosyasına yazıyoruz istersek stream içine de yazabilirdik

ds.WriteXml(“dosya yolu ve ismi”);

Bu şekilde DataSet yardımıyla XML dosyalarınızı da tıpkı Veritabanı gibi kullanabilirsiniz. Umarım faydalı olmuştur.

Mustafa Tayyip YETİŞ
Yazılım Geliştirme Uzmanı

 

Yorum Yap