CodeKitHub
Kodeverktøy

XPath-tester

Sist oppdatert:

XPath er et spørrespråk for å velge noder fra et XML- (eller HTML-)dokument ved hjelp av stiuttrykk, på samme måte som en filsti velger en fil i en mappestruktur. Med dette verktøyet kan du lime inn valgfri XML, skrive et XPath-uttrykk, og umiddelbart se hvilke noder som matcher — inkludert antall noder, serialisert output og tydelige feilmeldinger ved ugyldig XML eller ugyldig XPath-syntaks. Det kjører helt i nettleseren din ved hjelp av den native `document.evaluate`-motoren som er innebygd i alle moderne nettlesere, så ingenting du limer inn blir noensinne lastet opp noe sted.

Hva er dette verktøyet?

XPath (XML Path Language) er en W3C-standard for å navigere og velge noder — elementer, attributter, tekst — inne i et XML-dokument ved hjelp av kompakt, stilignende syntaks, f.eks. velger `//book[price>30]/title` hver `<title>` der søskenelementet `<price>` er større enn 30, hvor som helst i dokumentet. Det brukes av XSLT-stilark, XML-valideringsverktøy, webskrapere, rammeverk for nettleserautomatisering (Selenium, Playwright) og mange programmeringsspråks XML-biblioteker.

Den gjeldende versjonen som er implementert av alle store nettlesere — Chrome, Firefox, Safari, Edge — er XPath 1.0, den opprinnelige W3C-anbefalingen fra 1999. Dette verktøyet bruker akkurat den samme native motoren via nettleserens `document.evaluate()`-API, så resultatene her stemmer overens med det du ville fått fra nettleserens DevTools eller JavaScript som kjører i en nettleser. Det implementerer ikke de senere XPath 2.0/3.0/3.1-spesifikasjonene (som legger til funksjoner som `for`, sekvenser og regex-matching) — se OSS for hva dette betyr i praksis.

Et uttrykk kan returnere en av to typer resultater: et nodesett (null eller flere matchende elementer, attributter eller tekstnoder, som dette verktøyet serialiserer og lister opp én per linje sammen med et antall), eller en skalarverdi — et tall, en streng eller en boolsk verdi — når selve uttrykket beregner en verdi, som `count(//book)` eller `//book[1]/title = 'Dune'`.

Hvorfor bruke det?

  • Feilsøk et XPath-uttrykk før du hardkoder det inn i en webskraper, Selenium/Playwright-test eller XSLT-stilark.
  • Sjekk raskt om en gitt XPath velger noden du forventer, fra et reelt XML/HTML-eksempel.
  • Se eksakte treffantall og serialisert output i stedet for å gjette ut fra kode.
  • Få umiddelbare, lesbare feilmeldinger for ugyldig XML eller ugyldig XPath-syntaks i stedet for et kryptisk stack-spor.
  • 100 % klientsidebasert: XML-en og uttrykket ditt forlater aldri nettleseren din.

Slik bruker du det

  1. Lim inn eller rediger XML-en (eller HTML-en) din i inndataboksen — et eksempeldokument for en bokhandel er forhåndsutfylt slik at du kan se det fungere med en gang.
  2. Skriv et XPath-uttrykk i uttrykksfeltet, eller rediger det forhåndsutfylte eksemplet.
  3. Klikk på "Evaluate" (eller trykk Enter i uttrykksfeltet).
  4. Les de matchede nodene nedenfor, med et antall øverst; skalarresultater (tall, strenger, boolske verdier) vises direkte.
  5. Hvis XML-en eller uttrykket er ugyldig, erstatter en spesifikk feilmelding resultatene.

Eksempel

Inndata

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

Resultat

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

Bare 2 av de 3 bøkene har en pris over 30, så nøyaktig 2 <title>-elementer returneres — den tredje boken (Gatsby, $12,99) blir korrekt utelatt.

XPath vs. CSS-selektorer i et nøtteskall

Begge språkene velger noder fra et dokument, men de løser forskjellige problemer. Bruk denne tabellen til å velge riktig verktøy for et gitt utvalg.

MulighetXPathCSS-selektorer
Velg etter tag/klasse/id nedoverJaJa — og vanligvis raskere
Velg etter synlig/tekstinnholdJa — `contains(text(),'x')`Nei
Naviger oppover til en overordnet/forfarJa — `//div[span]/..`Nei (`:has()` er et nyere, delvis unntak)
Sammenligning av søskenverdier (f.eks. `price>30`)JaNei
Fungerer utenfor en nettleser (serversidens XML-verktøy, XSLT)JaNei — CSS-selektorer er spesifikke for nettleser/DOM

Relaterte verktøy

Jobber du med strukturerte dataformater? Disse verktøyene passer godt sammen med XPath-testing.

JSON Formatter · JWT Decoder

Ofte stilte spørsmål

Hva brukes XPath til?

XPath velger noder — elementer, attributter eller tekst — fra et XML- eller HTML-dokument ved hjelp av stisyntaks. Det er utvalgsspråket bak XSLT-transformasjoner, mange XML-validatorer, og det brukes mye i webskraping og automatisering av nettlesertester (Selenium, Playwright, Cypress) for å finne elementer på en side, spesielt når CSS-selektorer alene ikke kan uttrykke betingelsen som trengs.

XPath vs. CSS-selektorer — hva bør jeg bruke?

De overlapper, men er ikke likeverdige. XPath kan velge en overordnet basert på et barns innhold (`//div[span='Total']`), navigere oppover til forfedre, og velge etter synlig tekst (`//button[contains(text(),'Submit')]`) — CSS-selektorer kan ikke gå oppover i treet og kan ikke matche på tekstinnhold i det hele tatt. Hvis du bare velger etter tag, klasse eller ID nedover gjennom dokumentet, er CSS-selektorer enklere å skrive og som regel raskere å evaluere. Bruk XPath spesifikt når du trenger "velg den overordnede til denne teksten" eller "velg etter hva elementet sier", ikke bare hva det er tagget eller klassifisert som.

Støtter dette verktøyet XPath 2.0- eller 3.0-funksjoner?

Nei — det gjør heller ingen nettleser. Nettlesere implementerer XPath 1.0 (W3C-anbefalingen fra 1999) via `document.evaluate()`, og dette verktøyet bruker akkurat den samme native motoren, så det er nøyaktig i tråd med det du ville fått ved å kjøre det samme uttrykket i nettleserens DevTools eller JavaScript. Funksjoner og egenskaper introdusert i XPath 2.0/3.0/3.1 (som `for`-uttrykk, sekvenser eller `matches()` med regex) er ikke tilgjengelige — bare 1.0-funksjoner som `contains()`, `starts-with()`, `substring()`, `count()`, `position()` og `last()` fungerer her.

Hva er noen vanlige XPath-uttrykk jeg bør kjenne til?

`//tag` velger hver `<tag>` hvor som helst i dokumentet. `//tag[@attr='value']` velger `<tag>`-elementer der attributtet `attr` er lik `value`. `//tag[contains(text(),'x')]` velger `<tag>`-elementer der den direkte teksten inneholder `x`. `//tag[1]` velger det første `<tag>`-søsknet i hver overordnet. `//parent/child` velger `<child>`-elementer som er direkte barn av `<parent>`. `count(//tag)` returnerer et tall i stedet for et nodesett.

Håndterer dette verktøyet XML-navnerom?

Bare det vanlige tilfellet uten navnerom støttes rent, noe som dekker det store flertallet av håndskrevet eller skrapet XML/HTML. Hvis dokumentet ditt erklærer et XML-navnerom (f.eks. `xmlns="..."` på rotelementet), krever `document.evaluate` en navneromsbevisst resolver-funksjon som knytter prefikser til URI-er, noe dette enkle verktøyet ikke setter opp — uttrykk mot navneroms-XML kan returnere null treff selv om de ser riktige ut. Dette er en kjent begrensning, ikke en feil: fjern navneromserklæringen fra eksemplet ditt, eller bruk local-name()-funksjonen som en løsning (f.eks. `//*[local-name()='title']`).

Blir XML-en eller XPath-uttrykket mitt sendt til en server?

Nei. Alt kjører lokalt ved hjelp av nettleserens innebygde `DOMParser` og `document.evaluate()` — den samme motoren nettleseren din allerede bruker internt. Ingenting du skriver eller limer inn forlater noensinne enheten din.

Relaterte verktøy