W tym artykule
Czym jest XPath?
XPath (XML Path Language) to standardowy jezyk zapytan W3C do wybierania wezlow z dokumentow XML. Wykorzystuje skladnie podobna do sciezek do nawigowania po hierarchicznej strukturze drzewa XML, wybierajac elementy, atrybuty i wezly tekstowe na podstawie ich pozycji, nazwy lub wartosci.
XPath nie jest samodzielna technologia -- jest osadzony w innych standardach takich jak XSLT, XQuery i API DOM. Wszystkie nowoczesne przegladarki obsluguja XPath do odpytywania dokumentow HTML, a narzedzia takie jak Selenium, Scrapy i lxml intensywnie wykorzystuja wyrazenia XPath do web scrapingu i automatycznego testowania.
Jak dzialaja zapytania XPath
Wyrazenie XPath nawiguje po drzewie dokumentu uzywajac osi (kierunkow), testow wezlow (filtrow) i predykatow (warunkow). Zrozumienie tych trzech koncepcji pozwala skonstruowac dowolne zapytanie.
- Osie i sciezki -- / wybiera od korzenia, // wybiera potomkow wszedzie, .. przechodzi do rodzica, a nazwane osie jak following-sibling:: nawiguja wzgledem biezacego wezla
- Predykaty i filtry -- nawiasy kwadratowe [] dodaja warunki: //book[price>30] wybiera ksiazki z cena powyzej 30, a //div[@class='main'] wybiera divy z konkretnym atrybutem klasy
- Funkcje i operatory -- XPath dostarcza wbudowane funkcje jak contains(), starts-with(), normalize-space() i count() do manipulacji lancuchami, porownywania i zliczania wezlow
Wypróbuj za darmo — bez rejestracji
Przetestuj zapytanie XPath →Kiedy uzywac XPath
XPath jest niezbedny, gdy trzeba programistycznie wyodrebniac konkretne dane z dokumentow XML lub HTML.
- Web scraping -- wyodrebniaj ceny produktow, tytuly artykulow lub linki ze stron internetowych uzywajac wyrazen XPath w narzediach takich jak Scrapy, Puppeteer lub konsolach deweloperskich przegladarek
- Konfiguracja XML -- odpytuj i waliduj zlozone pliki konfiguracyjne jak Maven pom.xml, manifesty Android czy konteksty Spring XML, aby znalezc konkretne ustawienia lub zaleznosci
- Transformacje XSLT -- wybieraj wezly do transformacji w arkuszach stylow XSLT, ktore w calosci opieraja sie na wyrazeniach XPath do dopasowywania i przetwarzania elementow XML w rozne formaty wyjsciowe
Czesto zadawane pytania
Kiedy uzywac XPath zamiast selektorow CSS?
Selektory CSS sa prostsze i szybsze do podstawowego wybierania elementow po tagu, klasie lub ID. Wybierz XPath, gdy musisz wybierac po zawartosci tekstowej (//a[contains(text(),'Zaloguj')]), nawigowac w gore do wezlow nadrzednych, uzywac zlozonych predykatow lub pracowac z dokumentami XML (nie HTML). XPath jest tez wymagany w kontekstach XSLT i XQuery.
Co sie zmienilo miedzy XPath 1.0 a 2.0?
XPath 2.0 dodal bogatszy system typow (daty, sekwencje, wyrazenia regularne), wyrazenia warunkowe (if/then/else), wyrazenia kwantyfikowane (some/every) i wyrazenia zakresow. Jednak wiekszosc przegladarek i narzedzi do scrapingu obsluguje tylko XPath 1.0. Uzywaj funkcji XPath 2.0 w narzediach serwerowych jak Saxon lub pracujac z XSLT 2.0.
Jak obslugiwac przestrzenie nazw XML w XPath?
Elementy z przestrzeniami nazw wymagaja mapowania prefiksow. W wiekszosci API rejestrujesz prefiks przestrzeni nazw (np. ns='http://example.com'), a nastepnie odpytujesz uzywajac tego prefiksu: //ns:book/ns:title. Bez zarejestrowania przestrzeni nazw //book nie dopasuje elementow w przestrzeni nazw, nawet jesli lokalna nazwa to 'book'. Niektore narzedzia obsluguja local-name() jako obejscie: //*[local-name()='book'].