XPath är en teknik som noggrant och effektivt specificerar och extraherar den nödvändiga informationen från trädstrukturdata, såsom HTML och XML.
XPath Översikt
XPath är ett språk som används för att specificera och extrahera specifika element och attribut i ett XML- eller HTML-dokumentträd. Eftersom webbsidor ofta består av HTML används XPath i stor utsträckning i olika scenarier, såsom webbskrapning, datasökning och XML-datasökning.
Typisk användning är följande:
- Datautvinning i webbcrawlers: XPath används för att automatiskt hämta specifik data, såsom produktinformation på e-handelswebbplatser eller artikeltitlar på nyhetssajter.
- XML-datasökning och bearbetning: I affärssystem och datalänksbehandling utbyts data ofta i XML-format. Genom att använda XPath kan du effektivt extrahera nödvändig information från stora mängder XML-data.
- Parsing API-svar (XML-format): När man använder XML-baserade API:er, såsom SOAP, används XPath för att analysera svarsdata. Detta gör att du snabbt kan få specifika statuskoder och resultatdata, vilket förbättrar noggrannheten i systemintegration och automatiserad bearbetning.
Verktygsrekommendation
I processen att lära sig och använda XPath inkluderar vanliga verktyg:
Chrome Developer Tools: Ett kraftfullt verktyg som följer med Chrome-webbläsaren, du kan kalla det genom att trycka på F12-knappen. I panelen "Elements" kan du snabbt hitta HTML-element på en webbsida genom att hovra och klicka, och genom att högerklicka på ett element kan du direkt kopiera XPath-uttrycket för enkel verifiering och testning. Till exempel, när du analyserar en e-handelsproduktsida kan du använda Chrome-utvecklarverktyg för att snabbt hämta XPath för produktnamn, priser och andra element. Firefox Developer Tools: Levereras också med webbläsaren, liknande Chrome Developer Tools. Det gör det också möjligt att enkelt hitta element på din sida, samt att visa och testa XPath-uttryck. Detta är ett bra alternativ för utvecklare som är vana vid att använda Firefox-webbläsaren. Online XPath-testverktyg: Onlineverktyg som "XPath Tester" kan användas utan installation och kan användas genom att öppna en webbsida. Klistra helt enkelt in innehållet i ett XML- eller HTML-dokument, ange ett XPath-uttryck och se matchningsresultatet i realtid. Detta verktyg är särskilt lämpligt för nybörjare som snabbt vill komma igång och göra enkla XPath-övningar. XPath Helper Plugin: Tar vi Chrome Browser som exempel, efter installation av XPath Helper-pluginet kommer det att lägga till ett flytande fönster i webbläsarens gränssnitt när du surfar på webben, som visar XPath-vägen för det aktuella mus-över-elementet, och du kan redigera och testa XPath-uttryck direkt i fönstret, vilket avsevärt förbättrar utvecklingseffektiviteten.
XPath abstrakt syntax
Välj en nod
XPath använder väguttryck för att välja noder i ett XML-dokument. Noder väljs genom att följa en väg eller ett steg. De mest användbara väguttrycken listas nedan:
uttryck | beskrivning | | Nodnamn | Plockar alla undernoder till denna nod. | | / | Välj från rotnoden (ta barnnoden). | | // | Väljer noder i dokumentet från den aktuella noden i matchningsvalet, oavsett deras placering (ta efterföljande noder). | | . | Välj den aktuella noden. | | .. | Välj föräldranoden till den aktuella noden. | | @ | Välj ett attribut. |
I tabellen nedan har vi listat några väguttryck tillsammans med resultaten av uttrycken:
Väguttryck | utfall | | bokhandel | Välj alla noder som heter bokhandel. | | /bookstore | Välj rootelement-bokhandeln. Observera: Om vägen börjar med ett framåtriktat streck ( / ), representerar denna väg alltid en absolut väg till ett element! | | Bokhandel/bok | Väljer alla bokdelar som är barndelar i bokhandeln. | | //book | Väljer alla bokdelar, oavsett deras placering i dokumentet. | | Bokhandel//bok | Välj alla bokelement som är ättlingar till bokhandelselementet, oavsett var de är placerade under bokhandeln. | | @lang | Välj alla fastigheter som heter lang. |
Predikat
Ett predikat används för att hitta en specifik nod eller en nod som innehåller ett specificerat värde. Predikatet är inbäddat inom hakparenteser. I tabellen nedan listar vi några väguttryck med predikat, samt resultaten av uttrycken:
Väguttryck | utfall | | /bookstore/book[1] | Välj det första bokelementet som ingår i bokhandelns barnelement. | | /bookstore/book[last()] | Väljer det sista bokelementet som ingår i bokhandelns underelement. | | /bookstore/book[last()-1] | Väljer näst sista bokdelen som tillhör bokhandelns barnelement. | | /bookstore/book[position()<3] | Välj de två första bokelementen som är barndelar av bokhandelselementet. | | titel[@lang] | Väljer alla titelelement som har en egenskap som heter lang. | | titel[@lang='eng'] | Väljer alla titelelement som har ett lang-attribut med ett eng-värde. | | /bookstore/book[price>35.00] | Väljer alla bokdelar i bokhandelselementet, och värdet på priselementet måste vara högre än 35,00. | | /bookstore/book[price>35.00]//title | Väljer alla titelelement i bokdelen i bokhandeln, och värdet på priselementet måste vara över 35,00. |
Välj en okänd nod
XPath-jokrar kan användas för att plocka upp okända XML-element.
jokertecken | beskrivning | | * | Matchar vilken elementnod som helst. | | @* | Matchar vilken attributnod som helst. | | nod() | Matchar vilken typ av nod som helst. |
I tabellen nedan listar vi några väguttryck och resultaten av dessa uttryck:
Väguttryck | utfall | | /bookstore/* | Plockar alla barnelement från bokhandelselementet. | | //* | Väljer alla element i dokumentet. | | titel[@*] | Väljer alla titelelement med attribut. |
Välj flera vägar
Genom att använda "|" i väguttrycket Operatörer, ni kan välja flera vägar.
I tabellen nedan listar vi några väguttryck och resultaten av dessa uttryck:
Väguttryck | utfall | | //book/title | //book/price | Väljer alla titel- och priselement i bokdelen. | | titel | pris | Välj alla titel- och priselement i dokumentet. | | /bookstore/book/title | //price | Väljer alla titelelement i bokdelen som tillhör bokhandelselementet, samt alla priselement i dokumentet. |
XPath-funktionen
Följande är en kommenterad lista över XPath-specifika tillägg till XPath efter kärnfunktioner i XPath och XSLT, inklusive beskrivningar, syntax, parameterlistor, resultattyper och källor i motsvarande W3C-rekommendationer.
- boolean()
- tak()
- välj()
- concat()
- innehåller()
- räkna()
- current() XSLT-specifik
- dokument() XSLT-specifikt
- element-tillgänglig()
- false()
- golv()
- format-number() XSLT-specifik
- Funktion-tillgänglig()
- generate-id() XSLT-specifik
- id()
- key() XSLT-specifik
- lang()
- last()
- local-name()
- name()
- namespace-uri()
- normalize-space()
- not()
- number()
- position()
- rund()
- starts-with()
- string()
- stränglängd()
- delsträng()
- substring-efter()
- delsträng-före()
- sum()
- system-property() XSLT-specifik
- översätt()
- true()
- unparsed-entity-url() XSLT-specifik
Praktiska prov
Öppna Chrome och hämta textinnehållet i alla A-fliklänkar med följande kommando:
Som visas nedan:
Hänvisning:Inloggningen med hyperlänken är synlig. |