(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>