DOMXPath::query - Выполняет заданное XPath выражение
Вернуться к: DOMXPath
DOMXPath::query
(PHP 5, PHP 7)
DOMXPath::query — Выполняет заданное XPath выражение
Описание
$expression
[, DOMNode $contextnode
[, bool $registerNodeNS = true
]] )
Выполняет заданный XPath запрос expression.
Список параметров
-
expression -
XPath запрос.
-
contextnode -
Дополнительный параметр
contextnodeможет быть использован для указания обрабатывать относительные XPath запросы. По умолчанию запросы выполняются относительно корневого элемента. -
registerNodeNS -
Посредством необязательного аргумента
registerNodeNSможно отключить автоматическую регистрацию контекста узла.
Возвращаемые значения
Возвращает объект DOMNodeList содержащий узлы,
отвечающие условиям отбора в XPath expression.
Любой запрос, не возвращающий узлов, вернет пустой объект
DOMNodeList.
Если значение аргумента expression построено
неправильно или contextnode имеет неверное значение,
DOMXPath::query() вернет FALSE.
Список изменений
| Версия | Описание |
|---|---|
| 5.3.3 |
Добавлен аргумент registerNodeNS.
|
Примеры
Пример #1 Получение списка всех книг на английском
<?php
$doc = new DOMDocument;
// нам не нужны проблемы с пробелами
$doc->preserveWhiteSpace = false;
$doc->Load('book.xml');
$xpath = new DOMXPath($doc);
// начинаем с корневого элемента
$query = '//book/chapter/para/informaltable/tgroup/tbody/row/entry[. = "en"]';
$entries = $xpath->query($query);
foreach ($entries as $entry) {
echo "Найдена книга {$entry->previousSibling->previousSibling->nodeValue}," .
" автор {$entry->previousSibling->nodeValue}\n";
}
?>
Результат выполнения данного примера:
Найдена книга The Grapes of Wrath, автор John Steinbeck Найдена книга The Pearl, автор John Steinbeck
Можно также использовать аргумент contextnode
для более короткой записи выражения:
<?php
$doc = new DOMDocument;
$doc->preserveWhiteSpace = false;
$doc->load('book.xml');
$xpath = new DOMXPath($doc);
$tbody = $doc->getElementsByTagName('tbody')->item(0);
// запрос относительно узла tbody
$query = 'row/entry[. = "en"]';
$entries = $xpath->query($query, $tbody);
foreach ($entries as $entry) {
echo "Найдена книга {$entry->previousSibling->previousSibling->nodeValue}," .
" автор {$entry->previousSibling->nodeValue}\n";
}
?>
Смотрите также
- DOMXPath::evaluate() - Вычисляет переданное XPath выражение и возвращает типизированный результат, если возможно
Вернуться к: DOMXPath