Makale Özeti

XML dosyaları üzerinde nasıl çalışılabileceğimizi inceliyoruz...

Makale

.NET İLE   XML DOSYALARI ÜZERİNDE ÇALIŞMAK

    Merhaba arkadaşlar uzun bir ayrılıktan sonra yeniden beraberiz. Gerçektende tarihi günler yaşıyoruz. Eğer insanlık tarihini birazcık olsun incelerseniz bir tekerleğin dahi  ne kadar uzun bir sürede bulunduğunu yazının bulunma ve gelişme sürecinde bir hayli uzun olduğunu görürsünüz. Ancak geride bıraktığımız yüzyıl insanlık adına son derece önemli buluşlarla şekillendi. Şimdi ise Adeta bir hayal dünyasında yaşıyoruz. yaşı 60ın üzerinde olan insanlar bu gelişmeleri hayretle izlerken biz gençler ise bu gelişen yeni teknolojileri öğrenmek ve kullanmak adına son derece hızlı hareket etme ihtiyacındayız. Öyle ki 1995 yılında geliştirilen bir teknoloji şu anda tarih oluyor. İşte XML dediğimiz bu kavramla Bilgisayar dünyasında kurallar ve yasaklar yıkılıyor. Öyle ki bir Bilgisayar programı yazıyorum bu programın bir tarafı bilgisayar üzerinde çalışan bir Windows Uygulaması  (windowapplication)  bir diğer parçası bir web uygulaması  başka bir kısmı da bir mobil uygulama olabiliyor. İşte bütün bu farklı teknolojileri .NET ile bir şemsiye altında toplayan temel taşımız nedir diye sorarsanız cevabım "XML" derim.  Çünkü  bütün bu platformlarda ortak bir standart haline gelmiştir. Böylece Kompleks   uygulamalar geliştirmek artık geleceğin kaçınılmaz ihtiyaçlarına cevap vermek adına bir zorunluluk haline gelmiştir. Bu yazımızda ise Windows uygulamaları üzerinde XML dosyaları üzerinde nasıl çalışılabileceğini anlatmaya çalışacağız. Konuyu VB. NET ve C# olarak ele aldım. .NET üzerine yaptığım her sohbette bana VB.NET mi C# mı kullanıyorsunuz diyorlar. Ancak ben her ikisini de kullanabiliyorum cevabını veriyorum.Her İki Dili de bilmek bir futbolcunun her iki ayağını da kullanabilmsi gibidir. Hem Sağ ayağın pratik ve çabukluğu (VB.NET) ve Sol ayağın muhteşem meziyetleri (C#).

       1-Bir XML Dosyası Oluşturmak:

Bir  XML Dosyası verinin Kendisidir. Bu nedenle verinin bir kabuk yapısı olmalıdır. Bir Notepad dosyası açarak içine bu kısmı kopyalayın. Biz üç veri grubunu XML dosyamızda saklayacağız. Personel Sicil Numarası-Adı soyadı-Görevi Şeklinde olacak.

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

  </isciler>

İsterseniz okumaya yada yazmaya geçmeden önce Bir Form tararımı yapalım. Formu Aşağıdaki gibi düzenleyiniz


       2- XML Dosyalarına Veri Yazmak:

 İster XML dosyasından veri okuyun. ister yazın XML  dosyasının  fiziksel varlığını algılayan ve diğer metotları ve işlemleri kendi üzerinden olusturan nesnemiz XMLDocument nesnesidir. Şimdi VB.NET dilini kullanarak Yaz adında bir prosedür oluşturacağız.

Public Sub Yaz()
Dim doc As New XmlDocument

doc.Load("C:\XMLFile1.xml")

Dim isci As XmlElement = doc.CreateElement("isci")

isci.SetAttribute("sicil", Val(TextBox1.Text))

Dim
ad As XmlNode = doc.CreateNode("element", "ad", "")

ad.InnerText = TextBox2.Text

isci.AppendChild(ad)

Dim
gorev As XmlNode = doc.CreateNode("element", "gorev", "")

gorev.InnerText = TextBox3.Text

isci.AppendChild(gorev)

doc.DocumentElement.AppendChild(isci)

doc.Save("C:\XMLFile1.xml")

End Sub

 

 

Bu Prosedürü C# ile yazmak istersek aşağıdaki kodları incelemenizi tavsiye ederim.

public void yaz()

{

                this.ListView1.Items.Clear();

                XmlDocument doc=new XmlDocument();

                doc.Load("C:\\XMLFile1.xml");

                XmlElement isci=doc.CreateElement("isci");

                isci.SetAttribute("sicil",TextBox1.Text);

                XmlNode ad=doc.CreateElement("element","ad","");

                ad.InnerText=TextBox2.Text;

                isci.AppendChild(ad);

                XmlNode gorev=doc.CreateElement("element","gorev","");

                gorev.InnerText=TextBox2.Text;

                isci.AppendChild(gorev);

                doc.DocumentElement.AppendChild(isci);

                doc.Save("C:\\XMLFile1.xml");

                this.yukle();

}

 

Yukarıda bu işin oluşunda kilit rol oynayan nesneler var öncelikle bu nesneleri size bir tablo halinde tanıtmak istiyorum.

 

Nesne Adı Üretildiği Nesne  Görevi
XmlDocument     XML Dosyasıyla ilgili fiziksel bağlantıyı kurar ve üzerinde işlem yapılacak diğer nesneleri oluşturur. Bir nevi Connection nesnesine benzetilebilir. Ancak Connection nesnesinden çok daha farklı çalışır. Bağlantıdan çok daha fazla iş yapar.
XmlNodeList   XML üzerindeki Veri Yapılarını Listeler
XmlElement XmlDocument

CreateElement

Yeni bir Veri Yapısı (Satır oluşturur)
XmlNode XmlDocument

CreateNode

Yeni bir alt veri Yapısı (Satıra ait Sütun Oluşturur.)

 

 

 

 

 

 

       

 

        İlk Olarak XML dosyamızın Yolu bulunuyor dosya açılıyor. Sonrasında Yeni bir XmlElement Oluşturuluyor. SetAttribute Yöntemiyle   <isci>  tagına sicil isimli bir  Attribute ekleniyor.(Attribute ne olduğunu bilmeyen arkadaşlar Kasım Gülcan Arkadaşımızın ilgili yazısını okuyabilir) . Sicil Numarası bir Attributedır. Bizim HTML Taglarımızdaki <img> Tagının "src" özelliği gibi....

3- XML Dosyalarından Veri Okumak:

XML Dosyasından veri okumak için VB.NET ile aşağıdaki

Public Sub yukle()

ListView1.Items.Clear()

Dim s As String

Dim doc As New XmlDocument

doc.Load("C:\XMLFile1.xml")

Dim liste As XmlNodeList = doc.GetElementsByTagName("isci")

Dim isci As XmlNode = doc.CreateElement("isci")

For Each isci In liste

Dim x As Integer

x = Val(ListView1.Items.Count)

Dim sicil As String = isci.Attributes("sicil").Value

Dim ad As String = isci("ad").FirstChild.Value

Dim gorev As String = isci("gorev").FirstChild.Value

ListView1.Items.Add(sicil)

ListView1.Items(x).SubItems.Add(ad)

ListView1.Items(x).SubItems.Add(gorev)

Next

End Sub

Bu Prosedürü C# ile yazarsak:

public void yukle()

{

        ListView1.Items.Clear();

        XmlDocument doc=new XmlDocument();

        doc.Load("C:\\XMLFile1.xml");

        XmlNodeList liste=doc.GetElementsByTagName("isci");

        for(int i=0;i<liste.Count;i++)

{

                    & nbsp;       ListView1.Items.Add(liste.Item(i).Attributes["sicil"].Value);

                    & nbsp;       ListView1.Items[ListView1.Items.Count-1].SubItems.Add(liste.Item(i)["ad"].FirstChild.Value);

                    & nbsp;       ListView1.Items[ListView1.Items.Count-1].SubItems.Add(liste.Item(i)["gorev"].FirstChild.Value);

}

}

 

 

Bu Yazımızda salt bir XML dosyasından veri okuyup yazmayı inceledik XML konusundaki bir  sonraki yazımızda XML  verilerini Dataset içerisinde şekillendirmek ve XML ile Dataset üzerinden veri okumak üzerine olacak.Her Konuda Görüş ve önerilerinizi beklediğim bir mail adresim var.

  Tarık Gökhan Kızılırmak
tarikgokhan@hotmail.com