CodeKitHub
Kodna orodja

Preizkuševalnik XPath

Nazadnje posodobljeno:

XPath je poizvedovalni jezik za izbiro vozlišč iz dokumenta XML (ali HTML) z uporabo poti izrazov, podobno kot pot do datoteke izbere datoteko v drevesu map. To orodje vam omogoča, da prilepite poljuben XML, napišete izraz XPath in takoj vidite, katera vozlišča se ujemajo — vključno s številom vozlišč, serializiranim izpisom in jasnimi sporočili o napakah za neveljaven XML ali neveljavno sintakso XPath. Deluje v celoti v vašem brskalniku z uporabo domačega mehanizma `document.evaluate`, vgrajenega v vsak sodoben brskalnik, zato se nič, kar prilepite, nikoli ne naloži nikamor.

Kaj je to orodje?

XPath (XML Path Language) je standard W3C za krmarjenje in izbiranje vozlišč — elementov, atributov, besedila — znotraj dokumenta XML z uporabo kompaktne sintakse, podobne poti, npr. `//book[price>30]/title` izbere vsak `<title>`, katerega sorojeni element `<price>` je večji od 30, kjer koli v dokumentu. Uporabljajo ga slogovne predloge XSLT, orodja za preverjanje veljavnosti XML, spletni pobiralniki podatkov, ogrodja za avtomatizacijo brskalnika (Selenium, Playwright) in knjižnice XML številnih programskih jezikov.

Trenutna različica, ki jo izvajajo vsi glavni brskalniki — Chrome, Firefox, Safari, Edge — je XPath 1.0, izvirno priporočilo W3C iz leta 1999. To orodje uporablja natanko isti domači mehanizem prek vmesnika API `document.evaluate()` brskalnika, zato se rezultati tukaj ujemajo s tem, kar bi dobili v razvijalskih orodjih brskalnika ali kateremkoli JavaScriptu, ki teče v brskalniku. Ne izvaja poznejših specifikacij XPath 2.0/3.0/3.1 (te dodajajo funkcije, kot so `for`, zaporedja in ujemanje z regularnimi izrazi) — za praktični pomen tega si oglejte pogosta vprašanja.

Izraz lahko vrne eno od dveh vrst rezultatov: nabor vozlišč (nič ali več ujemajočih se elementov, atributov ali besedilnih vozlišč, ki jih to orodje serializira in našteje enega na vrstico skupaj s številom), ali skalarno vrednost — število, niz ali logično vrednost — kadar izraz sam izračuna vrednost, kot je `count(//book)` ali `//book[1]/title = 'Dune'`.

Zakaj ga uporabiti?

  • Odpravite napake v izrazu XPath, preden ga trdo kodirate v spletni pobiralnik podatkov, test Selenium/Playwright ali slogovno predlogo XSLT.
  • Hitro preverite, ali dani XPath izbere vozlišče, ki ga pričakujete, iz resničnega vzorca XML/HTML.
  • Poglejte natančno število ujemanj in serializiran izpis namesto ugibanja iz kode.
  • Takoj dobite berljive napake za slabo oblikovan XML ali neveljavno sintakso XPath namesto nerazumljivega sledenja sklada.
  • 100 % na strani odjemalca: vaš XML in izraz nikoli ne zapustita vašega brskalnika.

Kako ga uporabljati

  1. Prilepite ali uredite svoj XML (ali HTML) v vnosno polje — vzorčni dokument knjigarne je vnaprej izpolnjen, da lahko takoj vidite delovanje.
  2. V polje za izraz vnesite izraz XPath ali uredite vnaprej izpolnjen primer.
  3. Kliknite "Evaluate" (ali pritisnite Enter v polju za izraz).
  4. Preberite ujemajoča se vozlišča spodaj, s številom na vrhu; skalarni rezultati (številke, nizi, logične vrednosti) so prikazani neposredno.
  5. Če je XML ali izraz neveljaven, rezultate nadomesti posebno sporočilo o napaki.

Primer

Vnos

XML:
<bookstore>
  <book><title>The Great Gatsby</title><price>12.99</price></book>
  <book><title>Learning XPath</title><price>34.50</price></book>
  <book><title>Dune</title><price>45.00</price></book>
</bookstore>

XPath: //book[price>30]/title

Rezultat

✓ 2 node(s) matched
<title>Learning XPath</title>
<title>Dune</title>

Le 2 od 3 knjig imata ceno nad 30, zato sta vrnjena natanko 2 elementa <title> — tretja knjiga (Gatsby, 12,99 $) je pravilno izključena.

XPath proti selektorjem CSS na kratko

Oba jezika izbirata vozlišča iz dokumenta, vendar rešujeta različne težave. Uporabite to tabelo, da izberete pravo orodje za dano izbiro.

ZmožnostXPathSelektorji CSS
Izbira po oznaki/razredu/id-ju navzdolDaDa — in običajno hitreje
Izbira po vidni/besedilni vsebiniDa — `contains(text(),'x')`Ne
Pomik navzgor k nadrejenemu/prednikuDa — `//div[span]/..`Ne (`:has()` je novejša delna izjema)
Primerjave vrednosti sorojencev (npr. `price>30`)DaNe
Deluje zunaj brskalnika (strežniška orodja za XML, XSLT)DaNe — selektorji CSS so specifični za brskalnik/DOM

Sorodna orodja

Delate s strukturiranimi podatkovnimi formati? Ta orodja se dobro ujemajo s preizkušanjem XPath.

Oblikovalnik JSON · Dekodirnik JWT

Pogosta vprašanja

Za kaj se uporablja XPath?

XPath izbira vozlišča — elemente, atribute ali besedilo — iz dokumenta XML ali HTML z uporabo sintakse poti. Je izbirni jezik, na katerem temeljijo pretvorbe XSLT, številni validatorji XML, poleg tega pa se pogosto uporablja pri spletnem pobiranju podatkov in avtomatizaciji testiranja brskalnikov (Selenium, Playwright, Cypress) za iskanje elementov na strani, še posebej kadar selektorji CSS sami ne morejo izraziti potrebnega pogoja.

XPath proti selektorjem CSS — kaj naj uporabim?

Prekrivata se, vendar nista enakovredna. XPath lahko izbere nadrejeni element na podlagi vsebine podrejenega (`//div[span='Total']`), se pomika navzgor k prednikom in izbira po vidnem besedilu (`//button[contains(text(),'Submit')]`) — selektorji CSS se ne morejo pomikati navzgor po drevesu in se sploh ne morejo ujemati po besedilni vsebini. Če izbirate le po oznaki, razredu ali ID-ju navzdol po dokumentu, je selektorje CSS enostavneje napisati in jih je običajno hitreje ovrednotiti. Posezite po XPath posebej takrat, ko potrebujete "izberi nadrejeni element tega besedila" ali "izberi glede na to, kaj element pravi", ne le glede na to, kako je označen ali razvrščen.

Ali to orodje podpira funkcije XPath 2.0 ali 3.0?

Ne — enako kot noben brskalnik. Brskalniki izvajajo XPath 1.0 (priporočilo W3C iz leta 1999) prek `document.evaluate()`, in to orodje uporablja natanko isti domači mehanizem, zato natančno ustreza temu, kar bi dobili z izvajanjem istega izraza v razvijalskih orodjih brskalnika ali JavaScriptu. Funkcije in zmožnosti, uvedene v XPath 2.0/3.0/3.1 (kot so izrazi `for`, zaporedja ali `matches()` z regularnimi izrazi), niso na voljo — tukaj delujejo le funkcije 1.0, kot so `contains()`, `starts-with()`, `substring()`, `count()`, `position()` in `last()`.

Katere pogoste izraze XPath bi moral poznati?

`//tag` izbere vsak `<tag>` kjer koli v dokumentu. `//tag[@attr='value']` izbere elemente `<tag>`, katerih atribut `attr` je enak `value`. `//tag[contains(text(),'x')]` izbere elemente `<tag>`, katerih neposredno besedilo vsebuje `x`. `//tag[1]` izbere prvega sorojenega `<tag>` v vsakem nadrejenem elementu. `//parent/child` izbere elemente `<child>`, ki so neposredni podrejeni elementi `<parent>`. `count(//tag)` vrne število namesto nabora vozlišč.

Ali to orodje obravnava imenske prostore XML?

Čisto je podprt le običajni primer brez imenskega prostora, kar zajema veliko večino ročno napisanega ali pobranega XML/HTML. Če vaš dokument deklarira imenski prostor XML (npr. `xmlns="..."` na korenskem elementu), `document.evaluate` zahteva funkcijo razreševalca, ki pozna imenske prostore in preslika predpone v URI-je, česar to preprosto orodje ne nastavi — izrazi na XML z imenskim prostorom lahko vrnejo nič ujemanj, tudi če se zdijo pravilni. To je znana omejitev, ne napaka: iz vzorca odstranite deklaracijo imenskega prostora ali kot obhod uporabite funkcijo local-name() (npr. `//*[local-name()='title']`).

Ali sta moj XML ali izraz XPath poslana strežniku?

Ne. Vse teče lokalno z uporabo vgrajenega `DOMParser` in `document.evaluate()` vašega brskalnika — istega mehanizma, ki ga vaš brskalnik že interno uporablja. Nič, kar vnesete ali prilepite, nikoli ne zapusti vaše naprave.

Sorodna orodja