Bütün Yollar Sana Çıkar : XPath

Talha Uysal
Apinizer
Published in
4 min readOct 20, 2021

Herkese selamlar, XML yazı serimize devam ediyoruz. Bu yazıda XML içerisinde bir veriye ulaşabilmek için kullanılan XPath kavramından bahsedeceğim.

Bu görsel https://dev.to/mwickrmanayaka/what-is-xpath-in-selenium-58a4 sitesinden alınmıştır.

XPath, W3C (World Wide Web Consortium) tarafından geliştirilmiş bir standarttır. Bu standart farklı programlama dilleri tarafından geliştirilen kütüphaneler ile programatik olarak kullanılabilecek bir düzeyde geliştirilmiştir. XPath, XML dokümanları içerisindeki verileri almak için çeşitli ifadeler sağlar.

XPath, bir XML dokümanı içerisindeki node’lar ve node listesini elde etmek için “path expression” (yol ifadesi) kullanmaktadır. Bu ifadeler ise aşağıdaki tabloda yer almaktadır.

Şimdi de bu belirtmiş olduğum “path expression” ifadelerinin nasıl kullanıldıklarını örneklerle açıklayayım. Bu örnekleri ise “Apinizerürünümüzde yer almakta olan XPath Test” ortamı üzerinden gerçekleştireceğim.

“Cars.xml” isimli XML dokümanına aşağıda yer alan alan üzerinden erişebilirsiniz.

!!! Örneklerime geçmeden şunu belirtmek isterim görselde yer alacak olan bütün XPath ifadeleri dikdörtgen içerisine alınmış olarak gösterilecektir. !!!

İlk örneğimiz “Cars.xml” isimli dokümanımızda yer almakta olan, bir numaralı index değerine sahip elementin içerisinde yer alan değerleri getirmek olacak.

Yukarıdaki görselde yer alan çıktıyı elde etmek için kullandığımız XPath ifadesi, “cars” root node’undan başlayarak XML dokümanı içerisinde yer alan bütün “car” node’larını dolaşır, “car[1]” ifadesi ile de birinci index değerine sahip “car” elementi içerisinde yer alan değerleri ekrana getirir.

İkinci örneğimiz ise günlük fiyatı 1000₺ olan arabanın rengini elde etmek olsun.

Burada kullandığımız ifade ise “cars” root node’ undan başlar, “daily_price” 1000' e eşit olan “car” node’ nun “color” attribute’ nü seçer. XPath ifadelerinde bir koşul varsa, bu koşul [köşeli parantez] içerisinde belirtilir.

Üçüncü örneğimiz ise iki numaralı index değerine sahip olan arabaya ait olan tüm veriyi elde etmek olsun.

Yine bu örneğimizde “cars” root node’undan başlayarak, “car” node’ larını dolaşır ve “position()” isimli fonksiyonu kullanarak iki numaralı index değerine sahip arabanın değerlerini ekrana getirir. XPath ifadeleri içerisinde fonksiyonlarda tanımlıdır. Bu yazım içerisinde de bir kaç fonksiyon kullanımına dair örnekler vereceğim. Daha fazla XPath fonksiyon kullanımı için buradaki sayfaya gidebilirsiniz.

Dördüncü örneğimiz ise araç tipi olarak “hatchback” olan arabayı listelemek olsun.

Burada “//brand ” kullanarak XPath ifadesinin direkt olarak buradan başlamasını sağladık. Bir koşul ifadesi de kullandığımız için köşeli parantez içerisinde “@type” attribute’ nü yazdık ve “Hatchback” değerine göre getirimini sağladık.

Beşinci örneğimiz ise rengi siyah olan arabanın açıklamasına ait olan veriyi elde etmek olsun.

Bu ifade de yine “cars” root node’ undan başlayarak , “car” node ‘ u içerisinde “color” attribute’ ü “black” olan arabanın “description” verisini ekrana getirir.

Altıncı örneğimizde ise dokümanımızda yer alan son arabaya ait olan veriyi ekrana getirelim.

Kullanmış olduğumuz “last()” fonksiyonu dokümanımız içerisinde en sonda yer alan “car” elementini getirmektedir. Eğer sondan bir önceki elemana erişmek istersek “//car[last()-1]” ifadesini kullanabiliriz.

XPath ifadelerini kullanarak XML dokümanlarınız içerisinde yer alan veriye, istediğiniz şekilde erişebilirsiniz. XPath sayesinde içeriği karışık ve anlaması zor olan XML dokümanlarından kolayca veri elde edebilirsiniz.

Apinizer’da XPath

Apinizer’da veri paylaşım yöntemi XML olan servislerde politika uygulamak, veri manipülasyonu yapmak için XPath kullanımı oldukça yaygındır. Ayrıca sahip olduğu online XPath evaluator ile XML üzerinde test yapmanıza da imkan verir.

Apinizer API Yönetim Platformumuz hakkında daha fazla bilgi almak için buraya tıklayabilirsiniz.

XML ile alakalı yazımı okumadıysanız buradaki linkten, XSD ile alakalı yazımı okumadıysanız buradaki linkten erişim sağlayabilirsiniz. Serimin dördüncü yazısı XSLT konusu ile devam edecektir. Bir sonraki yazımda buluşmak dileğiyle.

--

--