У цій статті
Що таке 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'].