XPath (XML Path Language) adalah bahasa kueri untuk memilih node dan nilai dari dokumen XML. Di Apidog, XPath digunakan untuk mengekstrak data dari respons API XML, memvalidasi struktur XML, dan membuat aservi untuk API berbasis XML.Anda dapat menggunakan XPath untuk memilih node atau kumpulan node dalam dokumen XML dengan mengikuti jalur atau serangkaian langkah melalui hierarki dokumen.Contoh XML#
Kami akan menggunakan dokumen XML ini dalam contoh-contoh berikut:<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
Pemilihan Node#
XPath memungkinkan Anda memilih node atau kumpulan node dalam dokumen XML dengan mengikuti jalur atau langkah. Di bawah ini adalah beberapa ekspresi jalur yang paling umum:| Ekspresi | Deskripsi |
|---|
nodename | Memilih semua anak dari node ini |
/ | Memilih dari node akar |
// | Memilih node dalam dokumen dari node saat ini yang cocok dengan seleksi, terlepas dari posisinya |
. | Memilih node saat ini |
.. | Memilih node induk dari node saat ini |
@ | Memilih atribut |
Contoh Ekspresi Jalur#
Tabel berikut menunjukkan ekspresi jalur dan hasilnya berdasarkan XML contoh:| Ekspresi Jalur | Hasil |
|---|
bookstore | Memilih semua anak dari elemen bookstore |
/bookstore | Memilih elemen akar bookstore. Jika jalur dimulai dengan garis miring ( / ), maka jalur ini selalu merepresentasikan jalur absolut ke suatu elemen |
bookstore/book | Memilih semua elemen book yang merupakan anak dari bookstore |
//book | Memilih semua elemen book terlepas dari posisinya dalam dokumen |
bookstore//book | Memilih semua elemen book yang merupakan anak dari elemen bookstore, terlepas dari lokasinya di bawah bookstore |
//@lang | Memilih semua atribut bernama lang |
Jalur yang dimulai dengan / bersifat absolut (dari akar), sedangkan jalur tanpa / bersifat relatif terhadap node saat ini.
Predikat#
Anda dapat menggunakan predikat untuk menemukan node tertentu atau node yang berisi nilai tertentu. Predikat diapit tanda kurung siku dan memungkinkan pemfilteran yang kuat.Contoh Predikat#
| Ekspresi Jalur | Hasil |
|---|
/bookstore/book[1] | Memilih elemen book pertama dari elemen anak bookstore |
/bookstore/book[last()] | Memilih elemen book terakhir dari elemen anak bookstore |
/bookstore/book[last()-1] | Memilih elemen book kedua dari terakhir dari elemen anak bookstore |
/bookstore/book[position()<3] | Memilih dua elemen book pertama dari elemen anak bookstore |
//title[@lang] | Memilih semua elemen title yang memiliki atribut bernama lang |
//title[@lang='eng'] | Memilih semua elemen title yang memiliki atribut lang dengan nilai eng |
/bookstore/book[price>35.00] | Memilih semua elemen book dari bookstore dengan nilai elemen price lebih besar dari 35.00 |
/bookstore/book[price>35.00]//title | Memilih semua elemen title dari elemen book di bookstore dengan elemen price lebih besar dari 35.00 |
XPath menggunakan pengindeksan berbasis 1 untuk predikat, tidak seperti JSONPath yang menggunakan pengindeksan berbasis 0. Elemen pertama adalah [1], bukan [0].
Memilih Node yang Tidak Diketahui#
Wildcard XPath dapat digunakan untuk memilih elemen XML yang tidak diketahui tanpa mengetahui nama persisnya.Sintaks Wildcard#
| Wildcard | Deskripsi |
|---|
* | Mencocokkan node elemen apa pun |
@* | Mencocokkan node atribut apa pun |
node() | Mencocokkan jenis node apa pun |
Contoh Wildcard#
| Ekspresi Jalur | Hasil |
|---|
/bookstore/* | Memilih semua elemen anak dari elemen bookstore |
//* | Memilih semua elemen dalam dokumen |
//title[@*] | Memilih semua elemen title dengan atribut |
Wildcard berguna saat bekerja dengan struktur XML dinamis atau saat Anda ingin memilih semua elemen terlepas dari namanya.
Memilih Beberapa Jalur#
Anda dapat memilih beberapa jalur dengan menggunakan operator | dalam ekspresi jalur, yang memungkinkan Anda menggabungkan beberapa seleksi.Contoh Beberapa Jalur#
| Ekspresi Jalur | Hasil |
|---|
//book/title | //book/price | Memilih semua elemen title dan price dari elemen book |
//title | //price | Memilih semua elemen title dan price dalam dokumen |
/bookstore/book/title | //price | Memilih semua elemen title dari elemen book dari elemen bookstore dan semua elemen price dalam dokumen |
Kasus Penggunaan di Apidog#
XPath sangat berguna di Apidog untuk:Validasi Respons XML: Mengekstrak nilai tertentu dari respons API XML untuk memverifikasi kebenarannya
Pengujian API SOAP: Mengurai dan memvalidasi respons SOAP
Variabel Dinamis: Menyimpan nilai XML yang diekstrak untuk digunakan dalam permintaan berikutnya
Aservi Pengujian: Membuat aservi berdasarkan data respons XML
Ekstraksi Data: Mengambil bidang tertentu dari struktur XML bersarang yang kompleks
Meskipun JSON lebih umum dalam API modern, banyak sistem lama dan layanan berbasis SOAP masih menggunakan XML. XPath sangat penting untuk menguji API ini.
Referensi#