SimpleXMLElement::registerXPathNamespace - Создает префикс/пространство имен контекста для следующего XPath запроса
Вернуться к: SimpleXMLElement
SimpleXMLElement::registerXPathNamespace
(PHP 5 >= 5.2.0, PHP 7)
SimpleXMLElement::registerXPathNamespace — Создает префикс/пространство имен контекста для следующего XPath запроса
Описание
$prefix
, string $ns
)Создает префикс/пространство имен контекста для следующего XPath запроса. В частности это необходимо, если поставщик данного XML документа изменяет префикс пространства имен. registerXPathNamespace создаст префикс для связанного пространства имен, позволяя получить доступ к узлам в этом пространстве имен без необходимости изменения кода, учитывающего новые префиксы, предоставленные поставщиком.
Список параметров
-
prefix
-
Префикс используемого пространства имен в запросе XPath для получения пространства имен в
ns
. -
ns
-
Используемое пространство имен для запроса XPath. Оно должно соответствовать пространству имен в используемом XML документе иначе запрос XPath использующий
prefix
не даст никаких результатов.
Возвращаемые значения
Возвращает TRUE
в случае успешного завершения или FALSE
в случае возникновения ошибки.
Примеры
Пример #1 Установка префикса пространства имен для использования в запросе XPath
<?php
$xml = <<<EOD
<book xmlns:chap="http://example.org/chapter-title">
<title>My Book</title>
<chapter id="1">
<chap:title>Chapter 1</chap:title>
<para>Donec velit. Nullam eget tellus vitae tortor gravida scelerisque.
In orci lorem, cursus imperdiet, ultricies non, hendrerit et, orci.
Nulla facilisi. Nullam velit nisl, laoreet id, condimentum ut,
ultricies id, mauris.</para>
</chapter>
<chapter id="2">
<chap:title>Chapter 2</chap:title>
<para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin
gravida. Phasellus tincidunt massa vel urna. Proin adipiscing quam
vitae odio. Sed dictum. Ut tincidunt lorem ac lorem. Duis eros
tellus, pharetra id, faucibus eu, dapibus dictum, odio.</para>
</chapter>
</book>
EOD;
$sxe = new SimpleXMLElement($xml);
$sxe->registerXPathNamespace('c', 'http://example.org/chapter-title');
$result = $sxe->xpath('//c:title');
foreach ($result as $title) {
echo $title . "\n";
}
?>
Результат выполнения данного примера:
Chapter 1 Chapter 2
Обратите внимание, на то, как в примере XML-документу задается пространство имен с префиксом chap. Представьте, что этот документ (или другой похожий) может использовать префикс c. Так как он изменится, то запрос XPath больше не будет возвращать необходимых результатов и придется изменить запрос. Использование registerXPathNamespace позволяет избежать будущих модификаций запросов, даже если поставщик изменит префикс пространства имен.
Смотрите также
- SimpleXMLElement::xpath() - Запускает XPath запрос к XML данным
- SimpleXMLElement::getDocNamespaces() - Возвращает объявленное пространство имен в документе
- SimpleXMLElement::getNamespaces() - Получение пространств имен, используемых в документе
Вернуться к: SimpleXMLElement