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.

 

Etiketler : Etiket Yok
Kategoriler : ASP .NET XML
Yorumlar : 4 Yorum Yorum Yaz

Yorumlar

Admin 7/30/2010 11:35 AM
Emre Bey silme işlemi hakkında detaya girmedim çünkü burada xml veri işlemekti amaç. Ama madem sordunuz söyleyeyim; dsXML.Tables[0].Rows.RemoveAt([GridViewDeleteEventArgs ile yakalayacağınız index]) şeklinde DataTable içerisinden rowu silip tekrar DataSeti xml dosyasına yazdırıyoruz.
Emre 7/29/2010 7:36 PM
Anlatım güzel ama silme işlemini anlatmamışsınız rica etsem anlatırmısınız
Zeki AKDOĞAN 2/10/2010 10:21 AM
Paylaşım için teşekkür ederiz ama örnek uygulama için verilen link çalışmıyor.
serkan 11/17/2009 11:47 AM
tesekkur ederim paylasım için yanlız örnek kodların linki çalısmıyor

Yorum Yaz

Adınız: *
E-Mail Adresiniz: *
Web Sitesi:
Yorum: *
Güvenlik Kodu: *
 
Takip
Sayfalar
Arama
  Ara
Tag Bulutu