Пример работы с XPath в Java. Поиск в XML и выборка данных

Пример работы с XPath в Java. Поиск в XML и выборка данных

В этой статье мы рассмотрим пример работы с XPath в Java, а именно научимся находить нужную нам информацию с помощью XPath выражений и делать выборку из XML документа по различным условиям.

Кратко сведения про XPath

XPath предоставляет специальный синтаксис для поиска и выборки данных в XML документе. Используя XPath выражения, мы можем произвести выборку по условию, найти узлы или точное значение из любой части XML-документа.

XPath является частью платформы Java SE и находится в пакете javax.xml.xpath, поэтому никаких дополнительных зависимостей подключать не нужно — все работает прямо из коробки.

Для создания выражения для выборки по условию используется класс XPathExpression, который создается с помощью фабричных методов XPathFactory.newInstance() и вызова xpathFactory.newXPath(). Результат выборки должен быть представлен одним из 5 возможных типов:

  • XPathConstants.STRING
  • XPathConstants.NUMBER
  • XPathConstants.BOOLEAN
  • XPathConstants.NODE
  • XPathConstants.NODESET

Подробнее ниже в примере.

Пример работы с XPath в Java

Перед нами стоит задача получить информацию из XML файла разработчиков по следующим критериям:

  1. Узнать имена разработчиков, возраст которых меньше заданного в условии.
  2. Получить имена всех мидлов.
  3. Получить имя по известному id.

У нас есть XML документ с таким содержимым:

Как искать с помощью XPath?

Рассмотрим одно из выражений XPathExpression, которое мы будем использовать в нашей программе:

Получить имена всех мидлов:

В данном случае на вход методу compile() передается строка с условиями поиска (выражение), по результатам выполнения который создается новый объект XPathExpression.

В самом выражении мы указываем, что хотим искать в узлах Developer, которые находятся в корневом Developers. В каждом из этих узлов Developer мы хотим зайти в тег position и посмотреть, не является ли его значение равно ‘Middle’ — если true, то зайти в тег name текущего узла Developer и получить значение этого тега с помощью метода text().

Аналогично работаем с другими условиями, только вместо условия [position=’Middle’] задаем соответствующие критерии:

Возраст меньше заданного в age:

Имя по известному id:

Найти id можно, например, по имени:

Обратите внимание, для атрибута id используется символ @.

Теперь напишем класс, который реализует описанные выше задачи:

Теперь запустим нашу программу и посмотрим вывод на консоль:

Как видите, все результаты выборки совпадают с данными в исходном XML файле.

Читайте другие статьи по обработке XML в Java, а также подписывайтесь на новые материалы по Java и Android!

2 thoughts to “Пример работы с XPath в Java. Поиск в XML и выборка данных”

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *