Skip to main content
CheckTown
Инструменты разработчика

XPath Tester: запросы к XML-документам с XPath

Опубликовано 6 мин чтения
В этой статье

Что такое XPath?

XPath (XML Path Language) -- это стандартный язык запросов W3C для выбора узлов из XML-документов. Он использует синтаксис, подобный путям, для навигации по иерархической структуре XML-дерева, выбирая элементы, атрибуты и текстовые узлы на основе их позиции, имени или значения.

XPath не является самостоятельной технологией -- он встроен в другие стандарты, такие как XSLT, XQuery и DOM API. Все современные браузеры поддерживают XPath для запросов к HTML-документам, а инструменты как Selenium, Scrapy и lxml широко используют выражения XPath для веб-скрапинга и автоматизированного тестирования.

Как работают запросы XPath

Выражение XPath навигирует по дереву документа, используя оси (направления), тесты узлов (фильтры) и предикаты (условия). Понимание этих трех концепций позволяет построить любой запрос.

  • Оси и пути -- / выбирает от корня, // выбирает потомков в любом месте, .. переходит к родителю, а именованные оси как following-sibling:: навигируют относительно текущего узла
  • Предикаты и фильтры -- квадратные скобки [] добавляют условия: //book[price>30] выбирает книги с ценой выше 30, а //div[@class='main'] выбирает div с конкретным атрибутом класса
  • Функции и операторы -- XPath предоставляет встроенные функции, такие как contains(), starts-with(), normalize-space() и count() для манипулирования строками, сравнения и подсчета узлов

Попробуйте бесплатно — без регистрации

Протестировать запрос XPath →

Когда использовать XPath

XPath незаменим, когда нужно программно извлекать конкретные данные из XML или HTML-документов.

  • Веб-скрапинг -- извлекайте цены товаров, заголовки статей или ссылки с веб-страниц с помощью выражений XPath в инструментах как Scrapy, Puppeteer или консолях разработчика браузеров
  • Конфигурация XML -- запрашивайте и валидируйте сложные конфигурационные файлы, такие как Maven pom.xml, манифесты Android или контексты Spring XML, для поиска конкретных настроек или зависимостей
  • XSLT-преобразования -- выбирайте узлы для преобразования в таблицах стилей XSLT, которые полностью полагаются на выражения XPath для сопоставления и обработки XML-элементов в различные выходные форматы

Часто задаваемые вопросы

Когда использовать XPath вместо CSS-селекторов?

CSS-селекторы проще и быстрее для базового выбора элементов по тегу, классу или ID. Выбирайте XPath, когда нужно выбирать по текстовому содержимому (//a[contains(text(),'Войти')]), навигировать вверх к родительским узлам, использовать сложные предикаты или работать с XML-документами (не HTML). XPath также необходим в контекстах XSLT и XQuery.

Что изменилось между XPath 1.0 и 2.0?

XPath 2.0 добавил более богатую систему типов (даты, последовательности, регулярные выражения), условные выражения (if/then/else), квантифицированные выражения (some/every) и выражения диапазонов. Однако большинство браузеров и инструментов скрапинга поддерживают только XPath 1.0. Используйте возможности XPath 2.0 в серверных инструментах, таких как Saxon, или при работе с XSLT 2.0.

Как обрабатывать пространства имен XML в XPath?

Элементы с пространствами имен требуют отображения префиксов. В большинстве API вы регистрируете префикс пространства имен (например, ns='http://example.com') и затем запрашиваете с этим префиксом: //ns:book/ns:title. Без регистрации пространства имен //book не будет соответствовать элементам в пространстве имен, даже если локальное имя 'book'. Некоторые инструменты поддерживают local-name() как обходной путь: //*[local-name()='book'].

Похожие инструменты