Использование возможностей XPath: различные методы выбора элементов по значению атрибута

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. Не забудьте выбрать подходящий метод в зависимости от ваших конкретных требований.