DOMNode::C14N

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DOMNode::C14NКанонизирует узлы в строку

Описание

public DOMNode::C14N(
    bool $exclusive = false,
    bool $withComments = false,
    ?array $xpath = null,
    ?array $nsPrefixes = null
): string|false

Метод канонизирует узлы в строку

Список параметров

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>

Смотрите также