(PHP 5 >= 5.2.0, PHP 7, PHP 8)
DOMNode::C14N — Canonicalize nodes to a string
$exclusive
= false
,$withComments
= false
,$xpath
= null
,$nsPrefixes
= null
Canonicalize nodes to a string
exclusive
Enable exclusive parsing of only the nodes matched by the provided xpath or namespace prefixes.
withComments
Retain comments in output.
xpath
An 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).
nsPrefixes
An 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>