CodeKitHub
Nástroje pre kód

XPath tester

Naposledy aktualizované:

XPath je dopytovací jazyk na výber uzlov z XML (alebo HTML) dokumentu pomocou cestových výrazov, podobne ako cesta k súboru vyberá súbor v strome priečinkov. Tento nástroj vám umožňuje vložiť ľubovoľné XML, napísať XPath výraz a okamžite vidieť, ktoré uzly sa zhodujú — vrátane počtu uzlov, serializovaného výstupu a jasných chybových hlásení pri neplatnom XML alebo neplatnej XPath syntaxi. Beží úplne vo vašom prehliadači pomocou natívneho enginu `document.evaluate`, ktorý je zabudovaný v každom modernom prehliadači, takže nič, čo vložíte, sa nikdy nikam neodosiela.

Čo je tento nástroj?

XPath (XML Path Language) je štandard W3C na navigáciu a výber uzlov — elementov, atribútov, textu — v rámci XML dokumentu pomocou kompaktnej syntaxe podobnej ceste, napr. `//book[price>30]/title` vyberie každý `<title>`, ktorého súrodenecký element `<price>` je väčší ako 30, kdekoľvek v dokumente. Používajú ho XSLT šablóny štýlov, nástroje na validáciu XML, webové scrapery, frameworky na automatizáciu prehliadača (Selenium, Playwright) a XML knižnice mnohých programovacích jazykov.

Aktuálna verzia implementovaná každým hlavným prehliadačom — Chrome, Firefox, Safari, Edge — je XPath 1.0, pôvodné odporúčanie W3C z roku 1999. Tento nástroj používa presne ten istý natívny engine prostredníctvom API `document.evaluate()` prehliadača, takže výsledky tu zodpovedajú tomu, čo by ste dostali z DevTools prehliadača alebo akéhokoľvek JavaScriptu bežiaceho v prehliadači. Neimplementuje neskoršie špecifikácie XPath 2.0/3.0/3.1 (tie pridávajú funkcie ako `for`, sekvencie a zhodu pomocou regulárnych výrazov) — pozrite si Často kladené otázky, čo to v praxi znamená.

Výraz môže vrátiť jeden z dvoch typov výsledkov: množinu uzlov (nula alebo viac zhodných elementov, atribútov alebo textových uzlov, ktoré tento nástroj serializuje a uvedie jeden na riadok spolu s počtom), alebo skalárnu hodnotu — číslo, reťazec alebo booleovskú hodnotu — keď samotný výraz vypočíta hodnotu, ako napríklad `count(//book)` alebo `//book[1]/title = 'Dune'`.

Prečo ho používať?

  • Odlaďte XPath výraz predtým, ako ho natvrdo zakódujete do webového scrapera, testu Selenium/Playwright alebo XSLT šablóny štýlov.
  • Rýchlo skontrolujte, či daný XPath vyberá uzol, ktorý očakávate, zo skutočnej vzorky XML/HTML.
  • Uvidíte presné počty zhôd a serializovaný výstup namiesto hádania z kódu.
  • Získajte okamžité, čitateľné chyby pri poškodenom XML alebo neplatnej XPath syntaxi namiesto nezrozumiteľného výpisu zásobníka.
  • 100 % na strane klienta: vaše XML a výraz nikdy neopustia váš prehliadač.

Ako sa používa

  1. Vložte alebo upravte svoje XML (alebo HTML) do vstupného poľa — vzorový dokument kníhkupectva je vopred vyplnený, aby ste hneď videli, ako to funguje.
  2. Do poľa výrazu zadajte XPath výraz alebo upravte vopred vyplnený príklad.
  3. Kliknite na „Evaluate“ (alebo v poli výrazu stlačte Enter).
  4. Prečítajte si zhodné uzly nižšie, s počtom hore; skalárne výsledky (čísla, reťazce, booleovské hodnoty) sa zobrazujú priamo.
  5. Ak je XML alebo výraz neplatný, výsledky nahradí konkrétna chybová správa.

Príklad

Vstup

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

Výstup

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

Iba 2 z 3 kníh majú cenu nad 30, takže sa vrátia presne 2 elementy <title> — tretia kniha (Gatsby, 12,99 $) je správne vylúčená.

XPath vs. CSS selektory na prvý pohľad

Oba jazyky vyberajú uzly z dokumentu, ale riešia odlišné problémy. Použite túto tabuľku na výber správneho nástroja pre daný výber.

SchopnosťXPathCSS selektory
Výber podľa tagu/triedy/id smerom nadolÁnoÁno — a zvyčajne rýchlejšie
Výber podľa viditeľného/textového obsahuÁno — `contains(text(),'x')`Nie
Prechod nahor k rodičovi/predkoviÁno — `//div[span]/..`Nie (`:has()` je novšia čiastočná výnimka)
Porovnávanie hodnôt súrodencov (napr. `price>30`)ÁnoNie
Funguje mimo prehliadača (nástroje pre XML na strane servera, XSLT)ÁnoNie — CSS selektory sú špecifické pre prehliadač/DOM

Súvisiace nástroje

Pracujete so štruktúrovanými formátmi dát? Tieto nástroje sa dobre hodia k testovaniu XPath.

JSON Formatter · JWT Decoder

Časté otázky

Na čo sa používa XPath?

XPath vyberá uzly — elementy, atribúty alebo text — z XML alebo HTML dokumentu pomocou cestovej syntaxe. Je to výberový jazyk stojaci za XSLT transformáciami, mnohými validátormi XML, a hojne sa využíva pri webovom scrapingu a automatizácii testovania prehliadačov (Selenium, Playwright, Cypress) na vyhľadávanie elementov na stránke, najmä keď samotné CSS selektory nedokážu vyjadriť potrebnú podmienku.

XPath vs. CSS selektory — čo by som mal použiť?

Prekrývajú sa, ale nie sú rovnocenné. XPath dokáže vybrať rodiča na základe obsahu potomka (`//div[span='Total']`), prechádzať nahor k predkom a vyberať podľa viditeľného textu (`//button[contains(text(),'Submit')]`) — CSS selektory nedokážu ísť v strome nahor a vôbec nedokážu vyhľadávať podľa textového obsahu. Ak vyberáte iba podľa tagu, triedy alebo ID smerom nadol cez dokument, CSS selektory sa píšu jednoduchšie a spravidla sa vyhodnocujú rýchlejšie. Siahnite po XPath konkrétne vtedy, keď potrebujete „vybrať rodiča tohto textu“ alebo „vybrať podľa toho, čo element hovorí“, nielen podľa toho, ako je otagovaný alebo klasifikovaný.

Podporuje tento nástroj funkcie XPath 2.0 alebo 3.0?

Nie — rovnako ako žiadny prehliadač. Prehliadače implementujú XPath 1.0 (odporúčanie W3C z roku 1999) prostredníctvom `document.evaluate()`, a tento nástroj používa presne ten istý natívny engine, takže presne zodpovedá tomu, čo by ste dostali spustením rovnakého výrazu v DevTools prehliadača alebo v JavaScripte. Funkcie a vlastnosti zavedené v XPath 2.0/3.0/3.1 (napríklad výrazy `for`, sekvencie alebo `matches()` s regulárnymi výrazmi) nie sú dostupné — fungujú tu iba funkcie 1.0, ako `contains()`, `starts-with()`, `substring()`, `count()`, `position()` a `last()`.

Aké bežné XPath výrazy by som mal poznať?

`//tag` vyberie každý `<tag>` kdekoľvek v dokumente. `//tag[@attr='value']` vyberie elementy `<tag>`, ktorých atribút `attr` sa rovná `value`. `//tag[contains(text(),'x')]` vyberie elementy `<tag>`, ktorých priamy text obsahuje `x`. `//tag[1]` vyberie prvého súrodenca `<tag>` v každom rodičovi. `//parent/child` vyberie elementy `<child>`, ktoré sú priamymi potomkami `<parent>`. `count(//tag)` vráti číslo namiesto množiny uzlov.

Zvláda tento nástroj menné priestory XML?

Čisto je podporovaný iba bežný prípad bez menného priestoru, čo pokrýva veľkú väčšinu ručne písaného alebo scrapovaného XML/HTML. Ak váš dokument deklaruje menný priestor XML (napr. `xmlns="..."` na koreňovom elemente), `document.evaluate` vyžaduje funkciu resolvera, ktorá si je vedomá menných priestorov a mapuje prefixy na URI, čo tento jednoduchý nástroj nenastavuje — výrazy voči XML s menným priestorom môžu vrátiť nula zhôd, aj keď vyzerajú správne. Ide o známe obmedzenie, nie o chybu: odstráňte deklaráciu menného priestoru zo svojej vzorky, alebo ako riešenie použite funkciu local-name() (napr. `//*[local-name()='title']`).

Je moje XML alebo XPath výraz odosielaný na server?

Nie. Všetko beží lokálne pomocou vstavaného `DOMParser` a `document.evaluate()` vášho prehliadača — rovnakého enginu, ktorý váš prehliadač už interne používa. Nič, čo napíšete alebo vložíte, nikdy neopustí vaše zariadenie.

Súvisiace nástroje