Yakın zamanda XML dosyasından veri çekip gridde görüntületen, silme işlemi gerçekleştiren ve yeni kayıt ekleyen bir küçük sayfa hazırlamam gerekti. Daha önce XML ile çalışmak nasip olmamıştı bu yüzden hemen google'a danışmam gerekti. Vakit kısıtlı olduğundan bu işi her yönüyle anlatan bir site bulmaya çalıştım ama nafile. Bulduğum çeşitli sayflardan verileri birleştirip sonuç elde edebildim.
Belki bir kişinin dahi olsa işini görür diye hazırladığım sayfayı paylaşmak istiyorum. Hazırlayacağımız sayfada bir XML dosyasından öğrenci listesini çekecek(böte mezunu olduğumu hemen belli ettim :P). Grid üzerinden silme yapabilecek ve ayrıca yeni öğrenci kaydı girebileceğiz.
Öncelikle XML'de kullanacağımız yapıya bakalım;
<?xml version="1.0" standalone="yes"?>
<SINIF>
<OGRENCI>
<SIRANO>1</SIRANO>
<ADI>Sefa Burak</ADI>
<SOYADI>Yeniköylü</SOYADI>
</OGRENCI>
<OGRENCI>
<SIRANO>2</SIRANO>
<ADI>Ali</ADI>
<SOYADI>Koş</SOYADI>
</OGRENCI>
</SINIF>
Yukardaki örnek veri yapısını inceleyecek olursak genel olarak SINIF tagları arasında OGRENCI tagları içerisinde sıra numarası, adı ve soyadı olmak üzere öğrenci bilgilerini tuttuğumuzu görüyoruz.
Şimdi XML kısmını inceledikten sonra sayfamızı yapmaya başlayabiliriz. Bu şekilde bir sayfa tasarlıyoruz.

Ekranımızı hazırladıktan sonra işin en zevkli kısmına geçiyoruz yani kodlamaya : ) Önce sayfadaki işlemlerde kullanacağımız ve XML dosyamızdan seçeceğimiz DataSetimizi tanımlayıp okuma ve yazma fonksiyonlarımızı oluşturuyoruz. (Bunlar genelde bilinen işlemler olmasına rağmen yeni başlayan arkadaşlarımızın okuma ihtimaline karşı bu fonksiyonları aşağıya yazıyorum.)
private void OkuVeri()
{
try
{
dsXML.ReadXml(Server.MapPath("Liste.xml"));
}
catch (System.Exception ex)
{
lblUyari.Text = "Veri Okunamıyor ..!";
}
}
private void YazVeri()
{
dsXML.WriteXml(Server.MapPath("Liste.xml"));
}
Sayfa yüklenirken okuduğumuz veriyi gridimize bind ediyoruz. Şimdi burada sıfırdan oluşturduğumuz bir XML dosyası olduğunu düşünelim ve içerisinde veri yok. İlk verimizi yazacağız ve işlem başlayacak. Bu noktada aşağıdaki gibi tablo adını ve columnlarını oluşturarak yapımızın nasıl olacağını belirliyoruz;
DataTable dt = new DataTable("OGRENCI");
dt.Columns.Add(new DataColumn("SIRANO"));
dt.Columns.Add(new DataColumn("ADI"));
dt.Columns.Add(new DataColumn("SOYADI"));
dsXML.Tables.Add(dt);
Daha sonra normal bir şekilde verilerimizi ekleyip YazVeri fonksiyonuyla verilerimizi XML dosyasına yazıyoruz.
dsXML.Tables[0].Rows.Add();
dsXML.Tables[0].Rows[i]["SIRANO"] = (i + 1).ToString();
dsXML.Tables[0].Rows[i]["ADI"] = txtADI.Text;
dsXML.Tables[0].Rows[i]["SOYADI"] = txtSOYADI.Text;
YazVeri();
Silerkende Tablomuzdan GridViewDeleteEventArgs yardımıyla aldığımız satır indeksiyle satırımızı silip tekrar YazVeri fonksiyonuyla XML dosyamızdan da silinmesini sağlıyoruz.
Burada sıra no larda kayma olmaması için silme işleminden sonra verilerimizin tümüne yada sildiğimiz satırsan sonrasına yeniden sıra no verebiliriz.
Anlattığım programın örnek kodlarına BURAYA tıklayarak ulaşabilirsiniz. Umarım faydalı olur iyi çalışmalar diliyorum.
Teşekkürler.