XPath — мощный язык, используемый для навигации по документам XML и HTML. Одной из его ключевых особенностей является возможность выбирать элементы на основе значений их атрибутов. В этой статье мы рассмотрим различные методы выполнения этой задачи с помощью XPath, а также приведем примеры кода для каждого подхода.
Метод 1: выбор элементов по значению атрибута
Чтобы выбрать элементы на основе значения их атрибута, мы можем использовать следующее выражение XPath:
//tagName[@attributeName='attributeValue']
Например, предположим, что у нас есть следующий фрагмент HTML:
<div id="container">
<h1 class="title">Hello, World!</h1>
<p class="content">Lorem ipsum dolor sit amet.</p>
<a href="https://example.com" class="link">Visit Example</a>
</div>
Чтобы выбрать <h1>
//h1[@class='title']
Метод 2: использование значения атрибута «Содержит».
Иногда нам может потребоваться выбрать элементы, значение атрибута которых содержит определенную подстроку. Для этой цели XPath предоставляет функцию contains(). Вот пример:
//tagName[contains(@attributeName, 'substring')]
Предположим, у нас есть следующий фрагмент XML:
<employees>
<employee id="001" name="John Doe" />
<employee id="002" name="Jane Smith" />
<employee id="003" name="Robert Johnson" />
</employees>
Чтобы выбрать все элементы <employee>, в которых атрибут имени содержит подстроку «Смит», мы можем использовать следующее выражение XPath:
//employee[contains(@name, 'Smith')]
Метод 3: выбор элементов по значению атрибута с помощью подстановочных знаков
XPath поддерживает использование подстановочных знаков в значениях атрибутов. Звездочку (*) можно использовать для обозначения любого символа или последовательности символов. Вот пример:
//tagName[@attributeName='value*']
Предположим, у нас есть следующий фрагмент HTML:
<ul>
<li data-id="item-1">Item 1</li>
<li data-id="item-2">Item 2</li>
<li data-id="item-3">Item 3</li>
</ul>
Чтобы выбрать все элементы <li>, у которых атрибут data-id начинается с «item-», мы можем использовать следующее выражение XPath:
//li[starts-with(@data-id, 'item-')]
Метод 4: выбор элементов по значению атрибута с несколькими условиями
XPath позволяет нам комбинировать несколько условий для выбора элементов на основе нескольких значений атрибута. Вот пример:
//tagName[@attribute1='value1' and @attribute2='value2']
Предположим, у нас есть следующий фрагмент XML:
<books>
<book id="001" title="The Great Gatsby" author="F. Scott Fitzgerald" genre="Fiction" />
<book id="002" title="To Kill a Mockingbird" author="Harper Lee" genre="Fiction" />
<book id="003" title="1984" author="George Orwell" genre="Science Fiction" />
</books>
Чтобы выбрать все элементы <book>с атрибутом жанра, установленным на «Художественная литература», и атрибутом автора, установленным на «Харпер Ли», мы можем использовать следующее выражение XPath:
//book[@genre='Fiction' and @author='Harper Lee']
XPath предоставляет несколько методов для выбора элементов на основе значений их атрибутов. Используя эти методы, вы можете эффективно перемещаться и извлекать информацию из документов XML и HTML. Не забудьте выбрать подходящий метод в зависимости от ваших конкретных требований.