Примеры XPath

В данной главе на основе некоторых примеров демонстрируется базовый синтаксис XPath.

Пример XML документа

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


<?xml version="1.0" encoding="UTF-8"?>
<messages>
   <note>
      <heading lang="ru">Напоминание</heading>
      <body>Отправить письмо!</body>
      <desk>4</desk>
   </note>
   <note>
      <heading lang="ru">Re: Напоминание</heading>
      <body>Письмо отправлено</body>
      <desk>7</desk>
   </note>
</messages>

Загрузка XML документа

Для загрузки XML документа используется объект XMLHttpRequest, который поддерживается всеми основными браузерами.


var xmlhttp = new XMLHttpRequest();

В старых браузерах Microsoft (IE 5 и 6) используется код:


var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

Выбор узлов

К сожалению разные браузеры поддерживают разные способы для работы с XPath.

Chrome, Firefox, Edge, Opera и Safari для выбора узлов используют метод evaluate():


xmlDoc.evaluate(xpath, xmlDoc, null, XpathResult.ANY_TYPE, null);

Internet Explorer использует метод selectNodes():


xmlDoc.selectNodes(xpath);

Выбор всех заголовков

В следующем примере выбираются все узлы heading:


 /messages/note/heading 

Выбор заголовка первой заметки

В следующем примере выбирается заголовок heading первого узла note элемента messages:


 /messages/note[1]/heading

Выбор всех отделов

В следующем примере выбирается текст из всех узлов desk:


 /messages/note/desk[text()] 

Выбираем отделы с номером больше 4

В следующем примере выбираются все узлы desk, значение которых больше 4:


 /messages/note[desk>4]/desk

Выбираем заголовки заметок для отделов с номерами больше 4

В следующем примере выбираются все узлы heading тех узлов note, у элемент desk которых значение больше 4:


 /messages/note[desk>4]/heading