(PHP 5 >= 5.2.0, PHP 7, PHP 8)
DOMNode::C14N — Canonise des nœuds en une chaîne
$exclusive = false,$withComments = false,$xpath = null,$nsPrefixes = nullCanonise des nœuds en une chaîne de caractères.
exclusiveActive l'analyse des seuls nœuds correspondant à l'Xpath ou aux préfixes d'espace de noms fournis.
withCommentsConserve les commentaires dans la sortie.
xpathUn tableau de XPaths pour filtrer les nœuds. Chaque entrée dans ce tableau est un tableau associatif avec :
query requise contenant l'expression XPath en tant que chaîne de caractères.
namespaces optionnelle contenant un tableau qui mappe les préfixes de l'espace de noms (clés) aux URI de l'espace de noms (valeurs).
nsPrefixesUn tableau de préfixes d'espaces de noms utilisés pour filtrer les nœuds.
Retourne les nœuds canonisés, sous la forme d'une chaîne de caractères
ou false si une erreur survient
Exemple #1 Exemple avec une requête XPath
Cet exemple démontre une utilisation avancée par la canonicalisation et le filtrage des nœuds via une requête XPath.
<?php
$dom = new DOMDocument();
$dom->loadXML(<<<XML
<root xmlns:food="urn:food">
<!-- déclaration d'espace de noms redondante qui sera canonisée -->
<food:fruit xmlns:food="urn:food">Pomme</food:fruit>
<food:fruit>Orange</food:fruit>
<food:fruit>Poire</food:fruit>
<!-- légumes ici -->
<food:vegetable>Laitue</food:vegetable>
</root>
XML);
echo $dom->C14N(true, false, [
"query" => ".//f:fruit|.//f:fruit/text()",
"namespaces" => ["f" => "urn:food"],
]);
?>L'exemple ci-dessus va afficher :
<food:fruit>Pomme</food:fruit><food:fruit>Orange</food:fruit><food:fruit>Poire</food:fruit>