C# ile XML işlemleri

  • 13.9.2015
  • tayyipyetis
  • .Net Framework

xml işlemleri Merhaba, bu makalede C# ile temel XML işlemleri hakkında bilgi vermeye çalışacağım. vereceğim bilgiler temel nitelikte olup daha kapsamlı uygulamalar geliştirmenize yardımcı olacaktır. 

Bilindiği üzere XML son yıllarda çok popüler olmuş bir veri modelleme dilidir. yapısı kendisi ile aynı amaç için geliştirilmiş bir çok teknlojiden daha basit ve anlaşılırdır bundan sebeptir ki bazı uygulamalarda veriler mssql, mysql vs. veritabanlarında değil XML içinde depolanır. Nitekim ben de çok geniş olmayan uygulamalarımda xml teknlojisini kullanıyorum. Kullanım alanlarında bir diğeri de tüm platformlarda kullanıldığı için(.Net, Java, PHP) bu platformlar arasındaki veri iletişiminde çok büyük bir kolaylık sağlamaktadır. örneğin PHP ile yazılmış bir e-ticaret sitesinden verileri XML ile alıp ASP.Net ile yapılmış bir e-ticaret sitesine kolayca aktarabilirsiniz çünkü iki farklı platformda da XML işlemleri için kütüphaneler bulunmaktadır. Aynı şekilde Web Servislerde de platform farklılığını ortadan kaldırmak için XML teknolojisi kullanılmaktadır. SOAP protokolü platformdan bağımsız şekilde gelen XML taleplerine karşılık XML cevapları üretir bu da geliştiricilerin işin epeyce kolaylaştırır. Biz ise C# ile temel işlemleri anlatacağız ileriki tarihlerde daha detaylı anlatımlar gelecektir.

Öncelikler XML dosyası oluşturmak için XMLyaz() isminde bir fonksiyon oluşturalım :

        private void XMLyaz()
        {
            XmlTextWriter createXML = new XmlTextWriter("deneme.xml", UTF8Encoding.UTF8);
            createXML.WriteStartDocument();
            createXML.WriteComment("yorum satırı");
            //XML içine Açıklama satırı ekleme
            createXML.WriteStartElement("urunler");
            //Root elementi
            createXML.WriteEndDocument();
            createXML.Close();

            XmlDocument data = new XmlDocument();
            data.Load("deneme.xml");

            XmlElement element = data.CreateElement("bilgisayar");
            element.SetAttribute("ID", Guid.NewGuid().ToString());

            XmlElement name = data.CreateElement("marka");
            name.InnerText = "Casper";
            element.AppendChild(name);

            XmlElement model = data.CreateElement("model");
            model.InnerText = "Nirvana";
            element.AppendChild(model);

            XmlElement fiyat = data.CreateElement("fiyat");
            fiyat.InnerText = "1.000 TL";
            element.AppendChild(fiyat);

            data.DocumentElement.AppendChild(element);

            XmlTextWriter write = new XmlTextWriter("deneme.xml", null);
            write.Formatting = Formatting.Indented;
            data.WriteContentTo(write);
            write.Close();
        }
 

XML dosyası oluşturmanın bir kaç yöntemi vardır. XmlTextWriterXmlTextReader sınıfları bir xml dökümanını okuyup yazmayla ilgili tüm özellikleri içerirler yukarıdaki örnek bu sınıflar kullanılarak hazırlanmıştır. ilk önce deneme.xml adında bir dosya oluşturulup içerisine zorunlu olan root element eklenmiştir. ardından XmlDocument sınıfı ile elementler oluşturulup bunlara özellikler tanımlanmış ve dökümana eklenmiştir. en son tekrar XmlTextWriter sınıfı ile bu döküman dosyaya yazılmıştır. tüm bu işlemleri sadece XmlDocument sınıfını kullanarak da yapabilirdik. XmlDocument sınıfının Save() ve Load() metodlarını kullanarak bir dosyadan xml okuyup işleyip tekrar dosyaya yazabiliriz. fakat writer ve reader sınıfları dosyalama işlemleri için daha geniş imkanlar sunar. 

Şimdi de XMLoku isminde bir sınıf oluşturalım :

        private void oku()
        {

            XmlDocument data = new XmlDocument();
            data.Load("deneme.xml");

            XmlNodeList xmlnodelist = data.GetElementsByTagName("bilgisayar");
            foreach (XmlNode xmlnode in xmlnodelist)
            {
               
            }

            XmlTextReader okuyucu= new XmlTextReader("deneme.xml");
            okuyucu.Read();
while (okuyucu.Read())
{ okuyucu.MoveToElement();
listBox1.Items.Add("------------------------------------"); listBox1.Items.Add("Özellik : " + okuyucu.GetAttribute("item"));
listBox1.Items.Add("İsim : " + okuyucu.Name);
listBox1.Items.Add("Yol : " + okuyucu.BaseURI);
} } }

Yukarıda ise yine XmlDocument sınıfı ile dökümanı yükledik. ardından XmlNodeList sınıfı ile döküman içinden belirli özelliklere göre etiketleri istersek alt etiketleri ile birlikte çekebiliyoruz ardından for each ile veriler içerisinde gezinebiliyoruz. XmlTextReader sınıfı da verileri içerisinde gezinebilmek için kısıtlı özellikler sunuyor.

C# ile XML işlemleri temel olarak bu şekilde bir sonraki dersimizde XML işlemleri için vazgeçilmez bir veri sorgulama betiği olan XPath kullanımını göreceğiz. Umarım faydalı olmuştur.

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

Yorum Gönder

Diğer Makaleler

Etiketler