Bu Asp.Net makalemizde ister direct link üzerinden istersenizde fiziksel olarak bilgisayarınızda saklanan bir xml dosyasını datasete aktarabilir isterseniz xml içerisinden ihtiyacınız olan alanları çekebilirsiniz bu makalemizde 2 farklı yöntemi görmüş olacağız.
XML’den veri çekme ve kullanma yöntemleri
1.Yöntem
İlk örneğimizde fiziksel olarak Projemizin App_Data klasöründen bulunduracağımız XML dosyası içerisinde personellerimizi tutacağız ve bu personelleri olduğu gibi dataset içerisine bir tabloymuş gibi aktaracağız. Örneğimize başlayalım.
Öncelikle DataSet için System.Data, XmlDocument için System.Xml ve Dosya işlemleri için yani kod içerisinde File sınıfını kullanabilmek için System.IO namaspace(isim uzayları) alttaki örnekte olduğu gibi eklememiz gerekmektedir.
1 2 3 | using System.Xml; using System.Data; using System.IO; |
Şimdi ise XmlVeriGetir adında bir metod oluşturalım parametre olarak xml dosyamızın yolunu belirtiyoruz ve metod geriye bir dataset dönderiyor olacak.
1 2 3 4 5 6 7 8 9 | private DataSet XmlVerileriGetir(string xmlDosya) { DataSet ds = new DataSet(); if (File.Exists(MapPath(xmlDosya))) { ds.ReadXml(MapPath(xmlDosya)); } return ds; } |
Yukarıdaki örneğimizde Dataset sınıfından ds adından bir instance(örnek) alınıyor File sınıfının metodu olan Exists ile dosyanın belirtilen konumda varolup olmadığı kontrol ediliyor ve geri dönüş tipi olarak boolean bir değer dönderiyor Exists metodu true bir değer dönderirse yani dosya belirtilen konumda var ise Dataset sınıfının ReadXml() metodu ile xml içerisindeki veriler Dataset’e bir tablo olarak aktarılmaktadır.
- MapPath Metodu ile Projenin exesinin bulunduğu dizinin tam adresi vermektedir parametre olarak geçtiğiniz xmldosya değişkenine tanımlanan xml dosya adını exenin bulunduğu yerde arayacaktır.
- if, while v.b döngülerde koşul olarak verilen boolean tipde bir nesne için “booleandeger==true” gibi bir kullanıma gerek yoktur döngü koşuluna eklenen metod geri dönüş tipi booleansa ve nesne boolean tiptese direk “if(booleannesne)” veya metodsa “(if(BooleanGeriDonusTipliMetod())” şeklinde kullanılabilir.
Şimdi ise sayfamızın Page_Load olayında XmlDosyasındaki verileri gridview’de alttaki kod yardımıyla gösterelim.
1 2 3 4 5 6 7 8 9 | protected void Page_Load(object sender, EventArgs e) { string xmlDosya = "App_Data/personel.xml"; DataSet xmlVeri = XmlVerileriGetir(xmlDosya); GridView1.DataSource= xmlVeri; GridView1.DataBind(); } |
Yukarıdaki kodları açıklayacak olursak xmldosya değişkeni içerisinde personel xml dosyamızın “App_Data/personel.xml” olarak yolunu belirtiyoruz. ve tanımlamış olduğumuz XmlVerileriGetir() metodumuza değişkeni parametre olarak geçtikten sonra eğer böyle bir dosya varsa xmldosya adlı DataSet nesnesine veriler aktarılacaktır son olarak GridView1 adlı gridview nesnemizin DataSource’üne xmlveri datasetimizi aktarıyoruz verilerin bağlanması yani görüntülenmesi içinde GridView nesnemizin DataBindr() metodunu kullanıyoruz.
2.Yöntem
Bu örneğimizde direk olarak sayfamızın load’ında doc adında bir XMLDocument nesnesi oluşturuyoruz ve doc.Load() metodu ile xml dosyamızı doc nesnesine aktarıyoruz XmlNode ile xmldosyası içerindeki her bir elemanı bir parça yani node olarak düşünebiliriz en genel parçayı yani tüm diğer node’ları içerisinde barındıran node’u almak için doc.DocumentElement; propert’sini kullanıyoruz. ve sayfamızda bulunan label nesnelerine set ediyoruz değerleri.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | protected void Page_Load(object sender, EventArgs e) { XmlDocument doc = new XmlDocument(); doc.Load(Server.MapPath("~/App_Data/personel.xml")); XmlNode xml_node = doc.DocumentElement; lbl_adsoyad.Text = xml_node.SelectSingleNode("adsoyad").ChildNodes[0].Value.ToString(); lbl_kullaniciadi.Text = xml_node.SelectSingleNode("kullanici_adi").ChildNodes[0].Value.ToString(); lbl_sifre.Text = xml_node.SelectSingleNode("sifre").ChildNodes[0].Value.ToString(); lbl_email.Text = xml_node.SelectSingleNode("email").ChildNodes[0].Value.ToString(); lbl_telefon.Text = xml_node.SelectSingleNode("telefon").ChildNodes[0].Value.ToString(); } |
Hocam merhaba
Youtube üzerinden xml dosyamı oluşturdum ve belirttiğiniz 1. yöntem ile bilgileri okuma gerçekleştirdim. Xml dosyam aşağıdaki gibi fakat ben siteme xml deki xmlUrl kısmını çekip videoları listelemek istiyorum bir türlü yapamadım. Xml od aşağıda nasıl gerçekleştirebilirim.
Merhaba,
Kodları pastebin v.b. online servislerden paylaşıp link verirseniz yardımcı olmaya çalışırım bu şekilde kodlar otomatik olarak siliniyor.