Skip to main content
CheckTown
Narzędzia dev

XPath Tester: odpytywanie dokumentow XML za pomoca XPath

Opublikowano 6 min czytania
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'].

Powiązane narzędzia