W tym artykule
Czym jest XPath?
XPath (XML Path Language) to standardowy język zapytan W3C do wybierania węzłów z dokumentow XML. Wykorzystuje składnię podobna do ścieżek do nawigowania po hierarchicznej strukturze drzewa XML, wybierając elementy, atrybuty i węzły tekstowe na podstawie ich pozycji, nazwy lub wartości.
XPath nie jest samodzielna technologia -- jest osadzony w innych standardach takich jak XSLT, XQuery i API DOM. Wszystkie nowoczesne przeglądarki obsługują XPath do odpytywania dokumentow HTML, a narzędzia takie jak Selenium, Scrapy i lxml intensywnie wykorzystuja wyrażenia XPath do web scrapingu i automatycznego testowania.
Jak działają zapytania XPath
Wyrażenie XPath nawiguje po drzewie dokumentu używając osi (kierunkow), testow węzłów (filtrow) i predykatow (warunkow). Zrozumienie tych trzech koncepcji pozwala skonstruowac dowolne zapytanie.
- Osie i ścieżki -- / wybiera od korzenia, // wybiera potomkow wszędzie, .. przechodzi do rodzica, a nazwane osie jak following-sibling:: nawiguja względem bieżącego węzła
- Predykaty i filtry -- nawiasy kwadratowe [] dodaja warunki: //book[price>30] wybiera książki z cena powyżej 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 węzłów
Wypróbuj za darmo — bez rejestracji
Przetestuj zapytanie XPath →Kiedy używać XPath
XPath jest niezbędny, gdy trzeba programistycznie wyodrębniać konkretne dane z dokumentow XML lub HTML.
- Web scraping -- wyodrębniaj ceny produktow, tytuły artykułów lub linki ze stron internetowych używając wyrażeń XPath w narzediach takich jak Scrapy, Puppeteer lub konsolach deweloperskich przeglądarek
- Konfiguracja XML -- odpytuj i waliduj złożone pliki konfiguracyjne jak Maven pom.xml, manifesty Android czy konteksty Spring XML, aby znaleźć konkretne ustawienia lub zależności
- Transformacje XSLT -- wybieraj węzły do transformacji w arkuszach stylow XSLT, ktore w całości opieraja sie na wyrażeniach XPath do dopasowywania i przetwarzania elementow XML w różne formaty wyjściowe
Często zadawane pytania
Kiedy używać 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 zawartości tekstowej (//a[contains(text(),'Zaloguj')]), nawigowac w gore do węzłów nadrzednych, używać złożonych predykatow lub pracowac z dokumentami XML (nie HTML). XPath jest tez wymagany w kontekstach XSLT i XQuery.
Co sie zmieniło między XPath 1.0 a 2.0?
XPath 2.0 dodal bogatszy system typow (daty, sekwencje, wyrażenia regularne), wyrażenia warunkowe (if/then/else), wyrażenia kwantyfikowane (some/every) i wyrażenia zakresow. Jednak większość przeglądarek i narzędzi do scrapingu obsługuje tylko XPath 1.0. Używaj funkcji XPath 2.0 w narzediach serwerowych jak Saxon lub pracując z XSLT 2.0.
Jak obsługiwać przestrzenie nazw XML w XPath?
Elementy z przestrzeniami nazw wymagaja mapowania prefiksow. W większości API rejestrujesz prefiks przestrzeni nazw (np. ns='http://example.com'), a następnie odpytujesz używając tego prefiksu: //ns:book/ns:title. Bez zarejestrowania przestrzeni nazw //book nie dopasuje elementow w przestrzeni nazw, nawet jeśli lokalna nazwa to 'book'. Niektore narzędzia obsługują local-name() jako obejscie: //*[local-name()='book'].