XPath-testare
XML- eller HTML-dokument
Klistra in XML eller HTML med upp till 1 000 000 tecken. Utvärderingen sker i den här webbläsaren med XPath 1.0.
Ett absolut eller relativt XPath 1.0-uttryck. Prefix som deklareras i dokumentet registreras automatiskt; en standardnamnrymd är tillgänglig under prefixet d.
Att skriva XPath för skrapning eller XSLT blir ren gissningslek utan en levande sandlåda. Den här testaren tar din XML eller HTML i en ruta och ditt uttryck i en annan, utvärderar XPath 1.0 med webbläsarens egen motor och listar varje träffad nod med typ, attribut, textinnehåll och serialiserad uppmärkning. Skalära uttryck som count(//book) returnerar sitt värde direkt, och namnrymdsprefix som deklarerats i dokumentet registreras åt dig. Allt körs i din webbläsare: dokumentet laddas aldrig upp.
Så testar du ett XPath-uttryck
-
1
Klistra in XML eller HTML
Den automatiska identifieringen växlar till tolerant HTML-tolkning när den ser en HTML-doctype eller HTML-rot; du kan också tvinga XML- eller HTML-läge.
-
2
Ange ditt XPath
Absolut (`/library/book`) eller relativt (`//div[@class='card']`), vilket XPath 1.0-uttryck som helst.
-
3
Utvärdera
Webbläsarens XPath-motor kör frågan lokalt; ingenting skickas till någon server.
-
4
Granska resultaten
Varje träff visar nodtyp, attribut, trimmad text och serialiserad uppmärkning; upp till 200 träffar listas.
Grunderna i XPath 1.0
| Uttryck | Vad det träffar |
|---|---|
/books/book |
<book>-barn till roten <books> |
//book |
Varje <book> var som helst i dokumentet |
//book[@id='42'] |
<book> med id-attribut lika med 42 |
//book[1] |
Första <book> per förälder (inte i dokumentet) |
(//book)[1] |
Första <book> i hela dokumentet |
//book[title='1984'] |
<book> vars <title>-text är “1984” |
//book/@id |
id-attributen hos alla <book>-element |
//book[position() > 1] |
Alla <book> utom det första |
//book[last()] |
Sista <book> per förälder |
Skalära uttryck fungerar också: count(//book) returnerar ett tal, string(//title) en sträng och boolean(//book[@id]) sant eller falskt. Testaren visar de värdena direkt i stället för en nodlista.
Vanliga axlar bortom child
ancestor::, alla förfäderfollowing-sibling::, syskon efter den aktuella nodenpreceding-sibling::, syskon föredescendant::, alla ättlingarattribute::(kortform@), den aktuella nodens attributparent::(kortform..), föräldraelementet
HTML:s egenheter
HTML är inte strikt XML, så testaren tolkar det tolerant med webbläsarens HTML-parser i stället för den strikta XML-parsern. HTML-läget identifieras automatiskt utifrån <!DOCTYPE html> eller en <html>-rot, och med väljaren för dokumentläge kan du tvinga fram endera läget. I HTML-läge görs tagg- och attributnamn om till gemener, så skriv ditt XPath med gemener: //div[@class], inte //DIV[@CLASS].
Namnrymder
XML med namnrymder kräver att prefixen registreras:
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/">
<item>
<content:encoded>...</content:encoded>
</item>
</rss>
Testaren söker igenom dokumentet efter xmlns-deklarationer och registrerar varje prefix automatiskt, så //content:encoded fungerar direkt. En standardnamnrymd (ett rent xmlns="...") saknar prefix i dokumentet, så testaren binder den till prefixet d: välj <item>-element i ett flöde med standardnamnrymd med //d:item. De registrerade namnrymderna listas bredvid resultaten.
Vad den här testaren inte utvärderar
Webbläsare utvärderar XPath 1.0, samma dialekt som de flesta skrapningsverktyg använder. Funktioner från XPath 2.0 och senare, som matches(string, regex), tokenize(string, delimiter), for ... return-uttryck och sekvensoperatorer, ingår inte; dem hittar du i XSLT 2.0/3.0-verktygskedjor. XPath 1.0 förblir det mest portabla valet för webbskrapning.
Testtips
- Börja brett och snäva in. Först
//div, sedan//div[@class], sedan det specifika klassvärdet. - Kontrollera namnrymdsdeklarationerna. De flesta “varför returnerar mitt XPath ingenting?”-buggar är namnrymder; titta i listan över registrerade namnrymder.
- Tänk på skiftläget. XML är skiftlägeskänsligt. HTML-läget gör namn till gemener.
- Testa string() när du extraherar text.
//p/text()ochstring(//p)skiljer sig åt när det finns nästlad uppmärkning.
Vanliga frågor
Nej, bara XPath. De flesta webbläsare stöder båda via document.querySelectorAll (CSS) och document.evaluate (XPath). Använd det som är tydligast för uppgiften.
HTML-tolkningen gör tagg- och attributnamn till gemener. Se till att ditt XPath använder gemener: //div[@class], inte //DIV[@CLASS]. Kontrollera också läget: att tvinga XML på slarvig HTML misslyckas med ett tolkningsfel, medan HTML-läget tolkar den tolerant.
Prefix som deklarerats i dokumentet registreras automatiskt för ditt uttryck. En standardnamnrymd binds till prefixet d, så //d:item väljer <item>-element i ett dokument med standardnamnrymd. De aktiva bindningarna listas med resultaten.
Nej. Dokumentet och uttrycket utvärderas av webbläsarens egen XPath-motor och skickas inte till vår server, sparas inte och läggs inte till i sidans adress; de finns bara i den här webbläsarsessionen så att flerstegsvyn kan visa dina resultat.
Relaterade verktyg
ASCII-tabellreferens
Full ASCII-tabell från 0 till 127 med decimal-, hex-, oktal- och binärvärden samt notation för numeriska HTML-referenser, inklusive NUL, LF och DEL.
HTML-teckenreferens
En sökbar lista över HTML-entiteter med deras namngivna och numeriska koder samt kopiering med ett klick för specialtecken och symboler.
Färgpalettgenerator
Skapa monokromatiska, analoga, komplementära, triadiska eller tetradiska färgpaletter från en HEX-basfärg och exportera kopieringsklara CSS-variabler.
Slumpmässig färggenerator
Generera 1 till 50 slumpmässiga HEX-färger med färgrutor som du kan förhandsvisa, kopiera och använda i CSS, tester eller palettskissning.
Binär till hex-konverterare
Konvertera binär inmatning till ett vanligt hexadecimalt värde med versaler. Icke-binära tecken ignoreras och inledande nollor bevaras inte.
Förenklare för boolesk algebra
Utvärdera ett booleskt uttryck för varje kombination av indata och visa den fullständiga sanningstabellen. Stöder upp till fem variabler och operatorerna &, |, ! och ^.