(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
= null
Canonise des nœuds en une chaîne de caractères.
exclusive
Active l'analyse des seuls nœuds correspondant à l'Xpath ou aux préfixes d'espace de noms fournis.
withComments
Conserve les commentaires dans la sortie.
xpath
Un 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).
nsPrefixes
Un 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>