(PHP 5 >= 5.2.0, PHP 7, PHP 8)
DOMNode::C14N — Canonicalize nodes to a string
$exclusive = false,$withComments = false,$xpath = null,$nsPrefixes = nullCanonicalize nodes to a string
exclusiveEnable exclusive parsing of only the nodes matched by the provided xpath or namespace prefixes.
withCommentsRetain comments in output.
xpathAn array of XPaths to filter the nodes by. Each entry in this array is an associative array with:
query key containing the XPath expression as a string.
namespaces key containing an array that maps namespace prefixes (keys) to namespace URIs (values).
nsPrefixesAn array of namespace prefixes to filter the nodes by.
Returns canonicalized nodes as a string or false on failure
Example #1 Example with XPath query
This example demonstrates advanced usage canonicalizing and filtering the nodes by an XPath query.
<?php
$dom = new DOMDocument();
$dom->loadXML(<<<XML
<root xmlns:food="urn:food">
<!-- redundant namespace declaration will be canonicalized -->
<food:fruit xmlns:food="urn:food">Apple</food:fruit>
<food:fruit>Orange</food:fruit>
<food:fruit>Pear</food:fruit>
<!-- vegetables here -->
<food:vegetable>Lettuce</food:vegetable>
</root>
XML);
echo $dom->C14N(true, false, [
"query" => ".//f:fruit|.//f:fruit/text()",
"namespaces" => ["f" => "urn:food"],
]);
?>The above example will output:
<food:fruit>Apple</food:fruit><food:fruit>Orange</food:fruit><food:fruit>Pear</food:fruit>