(PHP 5 >= 5.2.0, PHP 7, PHP 8)
DOMNode::C14N — Канонизирует узлы в строку
$exclusive
= false
,$withComments
= false
,$xpath
= null
,$nsPrefixes
= null
Метод канонизирует узлы в строку
exclusive
Включает эксклюзивный разбор только тех узлов, которые совпадают с предоставленными xpath-выражениями или ns_prefixes-префиксами.
withComments
Сохранять комментарии в выводе.
xpath
Массив XPath-выражений для фильтрации узлов. Каждый элемент в этом массиве — ассоциативный массив с:
query
, который содержит XPath-выражение в виде строки.
namespaces
,
который содержит массив для сопоставления префиксов пространств имён (ключей)
и URI-идентификаторов пространств имён (значений).
nsPrefixes
Массив префиксов пространств имён для фильтрации узлов.
Метод возвращает канонизированные узлы в виде строки или false
, если возникла ошибка
Пример #1 Пример XPath-запроса
Пример демонстрирует расширенную канонизацию и фильтрацию узлов через XPath-запрос.
<?php
$dom = new DOMDocument();
$dom->loadXML(<<<XML
<root xmlns:food="urn:food">
<!-- избыточное объявление пространства имен канонизируется -->
<food:fruit xmlns:food="urn:food">Яблоко</food:fruit>
<food:fruit>Апельсин</food:fruit>
<food:fruit>Груша</food:fruit>
<!-- затем идут овощи -->
<food:vegetable>Латук</food:vegetable>
</root>
XML);
echo $dom->C14N(true, false, [
"query" => ".//f:fruit|.//f:fruit/text()",
"namespaces" => ["f" => "urn:food"],
]);
?>
Результат выполнения приведённого примера:
<food:fruit>Яблоко</food:fruit><food:fruit>Апельсин</food:fruit><food:fruit>Груша</food:fruit>