Xml yapısı projelerde vazgeçilmezlerden biri olmuştur ve bu vazgeçilmezliğin yanında xml içerisinde süzme yaparak belli kısımları alma işlemi için ise xpath’den faydalanmaktayız bu makalemizde xpath kullanım örneklerini bulabilirsiniz.
Örneğimizde kitaplar adında bir xml yapısını kullanacağız kitaplar xml dosyasının içeriği ise şu şekilde olacak.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <?xml version="1.0" encoding="UTF-8" ?> <kitaplar> <kitap kategori="COOKING"> <baslik dil="tr">Everyday Italian</baslik> <yazar>Giada De Laurentiis</yazar> <yil>2005</yil> <fiyat>30.00</fiyat> </kitap> <kitap kategori="CHILDREN"> <baslik dil="tr">Harry Potter</baslik> <yazar>J K. Rowling</yazar> <yil>2005</yil> <fiyat>29.99</fiyat> </kitap> <kitap kategori="WEB"> <baslik dil="tr">XQuery Kick Start</baslik> <yazar>James McGovern</yazar> <yazar>Per Bothner</yazar> <yazar>Kurt Cagle</yazar> <yazar>James Linn</yazar> <yazar>Vaidyanathan Nagarajan</yazar> <yil>2003</yil> <fiyat>49.99</fiyat> </kitap> <kitap kategori="WEB"> <baslik dil="tr">Learning XML</baslik> <yazar>Erik T. Ray</yazar> <yil>2003</yil> <fiyat>39.95</fiyat> </kitap> </kitaplar> |
Xpath Sözdizimi
Üstteki kitaplar xml yapısını ve xpath’i kullanarak çeşitli sorgular gerçekleştirelim.
Sözdizimi | Sonuç |
---|---|
/kitaplar/kitap[1] | Kitaplar elementi altında bulunan kitap elemelterinden ilkini seçmemizi sağlamaktadır. |
/kitaplar/kitap[last()] | Son kitap elementi’ni seçmek için kullanılır |
/kitaplar/kitap[last()-1] | Üstteki elementten farklı olarak son elementden bir öncekini seçmeye yarar |
/kitaplar/kitap[position()<3] | Kitaplar elementi altındaki kitap elementlerinin ilk 2 tanesini getirir(1 ve 2. element). |
//kitap[@dil] | lang attribute(özniteliği)’ne sahip olan tüm kitap elementleri seçilir. |
//kitap[@dil=’tr’] | kitap elemenleri içerisinde lang özniteliği ‘tr’ye eşit olanlar seçilir |
/kitaplar/kitap[fiyat>35.00] | kitap elemenlerinde fiyat elementinin değeri 35.00’den büyük olanlar seçilir. |
Kullanabileceğiniz diğer xpath sözdizimlerine gözatmak için Xpath Sorgusu İle Xml İçerisindeki Verileri Süzme Yöntemleri adlı makaleye gözatabilirsiniz.
Eğer xpath sorgulamanızı javascript’den yapacaksanız alttaki kodu kullanabilirsiniz alttaki javascript kodunda http://www.muratoner.net/feed
adresinden rss xml’i çekiliyor ve bu xml içerisinde path
değişkeninde tanımlı olduğu gibi her bir item
elementi içerisindeki title
özelliğindeki tüm değerler alınıyor.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { showResult(xhttp.responseXML); } }; xhttp.open("GET", "http://www.muratoner.net/feed", true); xhttp.send(); function showResult(xml) { var txt = ""; path = "/rss/channel//item/title" if (xml.evaluate) { var nodes = xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null); var result = nodes.iterateNext(); while (result) { txt += result.childNodes[0].nodeValue + "\n"; result = nodes.iterateNext(); } // Code For Internet Explorer } else if (window.ActiveXObject || xhttp.responseType == "msxml-document") { nodes = xml.selectNodes(path); for (i = 0; i < nodes.length; i++) { txt += nodes[i].childNodes[0].nodeValue + "\n"; } } console.log(txt); } |