XPath is een technologie die nauwkeurig en efficiënt de benodigde informatie specificeert en extraheert uit boomstructuurgegevens, zoals HTML en XML.
XPath Overzicht
XPath is een taal die wordt gebruikt om specifieke elementen en attributen te specificeren en te extraheren in een XML- of HTML-documentboom. Omdat webpagina's vaak uit HTML bestaan, wordt XPath veel gebruikt in verschillende scenario's, zoals web scraping, gegevensopvraging en XML-datazoekopdracht.
Typisch gebruik is als volgt:
- Data-extractie in webcrawlers: XPath wordt gebruikt om automatisch specifieke gegevens op te halen, zoals productinformatie op e-commerce websites of artikeltitels op nieuwssites.
- XML Data Search and Processing: In bedrijfssystemen en datalinkverwerking worden gegevens vaak uitgewisseld in XML-formaat. Door XPath te gebruiken, kun je efficiënt de benodigde informatie extraheren uit grote hoeveelheden XML-data.
- API-antwoorden parsen (XML-formaat): Bij gebruik van XML-gebaseerde API's, zoals SOAP, wordt XPath gebruikt om responsgegevens te parsen. Hierdoor kunt u snel specifieke statuscodes en resultaatgegevens verkrijgen, waardoor de nauwkeurigheid van systeemintegratie en geautomatiseerde verwerking verbetert.
Gereedschapsaanbeveling
Tijdens het leren en gebruiken van XPath zijn veelvoorkomende hulpmiddelen onder andere:
Chrome Developer Tools: Een krachtige tool die bij de Chrome-browser wordt geleverd, je kunt hem oproepen door op de F12-toets te drukken. In het paneel "Elements" kun je snel HTML-elementen op een webpagina vinden door te bewegen en te klikken, en door met de rechtermuisknop op een element te klikken kun je direct de XPath-expressie kopiëren voor eenvoudige verificatie en testen. Bijvoorbeeld, bij het analyseren van een e-commerce productpagina kun je Chrome-ontwikkeltools gebruiken om snel XPath te verkrijgen voor productnamen, prijzen en andere elementen. Firefox Developer Tools: Wordt ook geleverd met de browser, vergelijkbaar met Chrome Developer Tools. Het stelt je ook in staat om eenvoudig elementen op je pagina te vinden, evenals om XPath-expressies te bekijken en te testen. Dit is een goede optie voor ontwikkelaars die gewend zijn aan het gebruik van de Firefox-browser. Online XPath-testtools: Online tools zoals "XPath Tester" kunnen zonder installatie worden gebruikt en kunnen worden gebruikt door een webpagina te openen. Plak simpelweg de inhoud van een XML- of HTML-document, voer een XPath-expressie in en zie de matchresultaten in realtime. Deze tool is vooral geschikt voor beginners om snel te beginnen en eenvoudige XPath-oefeningen te doen. XPath Helper Plugin: Neem Chrome Browser als voorbeeld: na het installeren van de XPath Helper-plugin voegt het een zwevend venster toe aan de browserinterface tijdens het surfen op het web, waarbij het XPath-pad van het huidige muis-over-element wordt weergegeven, en je kunt XPath-expressies direct in het venster bewerken en testen, wat de ontwikkelingsefficiëntie aanzienlijk verbetert.
XPath Abstracte Syntaxis
Selecteer een knoop
XPath gebruikt padexpressies om knopen te kiezen in een XML-document. Knooppunten worden geselecteerd door een pad of stap te volgen. De meest bruikbare padexpressies worden hieronder vermeld:
uitdrukking | beschrijving | | Knoopnaam | Kiest alle kindknooppunten van deze knoop. | | / | Kies uit de wortelknoop (neem de kindknoop). | | // | Selecteert knooppunten in het document uit de huidige knoop van de overeenkomstige selectie, ongeacht hun locatie (neem afstammende knooppunten). | | . | Kies de huidige node. | | .. | Kies de ouderknoop van de huidige knoop. | | @ | Kies een attribuut. |
In de onderstaande tabel hebben we enkele padexpressies opgesomd samen met de resultaten van de expressies:
Padexpressies | resultaat | | boekhandel | Kies alle knooppunten met de naam boekwinkel. | | /bookstore | Kies de root-element boekwinkel. Opmerking: Als het pad begint met een voorwaartse slash ( / ), dan vertegenwoordigt dit pad altijd een absoluut pad naar een element! | | Boekwinkel/boek | Kiest alle boekelementen die kindelementen van de boekwinkel zijn. | | //book | Kiest alle boek-subelementen, ongeacht hun positie in het document. | | Boekwinkel//boek | Selecteer alle boekelementen die afstammelingen zijn van het boekwinkelelement, ongeacht waar ze zich onder de boekwinkel bevinden. | | @lang | Kies alle eigenschappen die lang heeten. |
Predikaten
Een predicaat wordt gebruikt om een specifieke knoop te vinden of een knoop met een bepaalde waarde. Het predicaat is ingebed in vierkante haken. In de onderstaande tabel geven we een lijst van enkele padexpressies met predicaten, en de resultaten van de uitdrukkingen:
Padexpressies | resultaat | | /bookstore/book[1] | Kies het eerste boekelement dat deel uitmaakt van het boekwinkel-kindelement. | | /bookstore/book[last()] | Kiest het laatste boekelement dat deel uitmaakt van het boekwinkel-subelement. | | /bookstore/book[last()-1] | Kiest het voorlaatste boekelement dat tot het boekwinkel-kindelement behoort. | | /bookstore/book[position()<3] | Kies de eerste twee boekelementen die kindelementen zijn van het boekwinkelelement. | | titel[@lang] | Kiest alle titelelementen die een eigenschap hebben genaamd lang. | | titel[@lang='eng'] | Kiest alle titelelementen die een lang-attribuut hebben met een eng-waarde. | | /bookstore/book[price>35.00] | Kiest alle boekelementen van het boekwinkelelement, en de waarde van het prijselement moet hoger zijn dan 35,00. | | /bookstore/book[price>35.00]//title | Kiest alle titelelementen van het boekelement in het boekwinkelelement, en de waarde van het prijselement moet hoger zijn dan 35,00. |
Selecteer een onbekende knoop
XPath wildcards kunnen worden gebruikt om onbekende XML-elementen op te pikken.
jokerteken | beschrijving | | * | Komt overeen met elke elementknoop. | | @* | Komt overeen met elke attribuutknoop. | | node() | Komt overeen met elk type knooppunt. |
In de onderstaande tabel geven we enkele padexpressies en de resultaten van deze expressies op:
Padexpressies | resultaat | | /bookstore/* | Kiest alle kindelementen van het boekwinkel-element. | | //* | Kiest alle elementen uit het document. | | titel[@*] | Kiest alle titelelementen met attributen. |
Kies een aantal paden
Door "|" te gebruiken in de paduitdrukking Operators, je kunt verschillende paden kiezen.
In de onderstaande tabel geven we enkele padexpressies en de resultaten van deze expressies op:
Padexpressies | resultaat | | //book/title | //book/price | Kiest alle titel- en prijselementen van het boekelement. | | titel | prijs | Kies alle titel- en prijselementen in het document. | | /bookstore/book/title | //price | Kiest alle titelelementen van het boekelement die tot het boekwinkelelement behoren, en alle prijselementen in het document. |
XPath-functie
Hieronder volgt een gecommenteerde lijst van XPath-specifieke toevoegingen aan XPath door kernfuncties van XPath en XSLT, inclusief beschrijvingen, syntaxis, parameterlijsten, resultaattypes en bronnen in de bijbehorende W3C-aanbevelingen.
- Boolean()
- plafond()
- choose()
- concat()
- bevat()
- count()
- huidig() XSLT-specifiek
- document() XSLT-specifiek
- element-available()
- false()
- vloer()
- format-number() XSLT-specifiek
- function-available()
- generate-id() XSLT-specifiek
- id()
- key() XSLT-specifiek
- lang()
- Laatste()
- local-name()
- naam()
- namespace-uri()
- normaliseer-ruimte()
- not()
- number()
- positie()
- rond()
- begint-met()
- string()
- string-length()
- Substring()
- substring-after()
- substring-voor()
- sum()
- system-property() XSLT-specifiek
- vertal()
- true()
- unparsed-entity-url() XSLT specifiek
Praktische toetsen
Open Chrome en krijg de tekstinhoud van alle A-tabbladlinks met het volgende commando:
Zoals hieronder getoond:
Referentie:De hyperlink-login is zichtbaar. |