DOMNode::C14N
Canonicalize nodes to a string
Description
public stringfalse DOMNode::C14N(
bool $exclusive
= false
,
bool $withComments
= false
,
arraynull $xpath
= null
,
arraynull $nsPrefixes
= null
)
Parameters
-
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:
-
A required
query
key containing the XPath expression as a string.
-
An optional
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.
Return Values
Returns canonicalized nodes as a string or false
on failure
Examples
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>