La sauvegarde d'un document XML permet de conserver les éventuelles modifications de valeurs ou de structure pratiquées sur ce document.
Il est possible soit d'enregistrer le document XML dans un fichier ou dans une chaîne de caractères.
Les méthodes saveXML() ou saveHTML() de l'objet DOMDocument permettent de récupérer un document sous la forme d'une chaîne de caractères.
$doc_xml = new DOMDocument('1.0', 'ISO-8859-1'); $doc_xml->formatOutput = true; $racine = $doc_xml->createElement('racine'); $doc_xml->appendChild($racine); $element = $doc_xml->createElement('element'); $racine->appendChild($element); $element->setAttribute('attribut', 'valeur'); $texte = $doc_xml->createTextNode('Un texte quelconque...'); $element->appendChild($texte); echo $doc_xml->saveXML(); /* Affiche : <?xml version="1.0" encoding="ISO-8859-1"?> <racine> <element attribut="valeur">Un texte quelconque</element> </racine> */
L'attribut formatOutput indique que le document doit être correctement formaté.
La méthode saveHTML() ne peut que sauvegarder la totalité de l'arborescence interne du document. Tandis que la méthode saveXML() est capable de fournir une représentation textuelle d'un noeud particulier du document.
echo $doc_xml->saveXML($element); /* Affiche : <element attribut="valeur">Un texte quelconque</element> */
Les méthodes save() et saveHTMLFile() enregistre un document au sein d'un fichier.
Les méthodes retournent le nombre d'octets écrits dans le fichier cible ou la valeur booléenne false en cas d'échec.
$source = 'source.html'; $doc_html = new DOMDocument(); $doc_html->loadHTMLFile($source); $titres = $doc_html->getElementByTagName('title'); $titres->item(0)->nodeValue = "Un nouveau titre"; $nb_octets = $doc_html->saveHTMLFile($source); if($nb_octets){ echo 'Le fichier ' . $source . ' a bien été sauvegardé !'; } else { echo 'Le fichier ' . $source . ' n'a pu être sauvegardé !'; }
La normalisation d'un document XML peut s'opérer au moyen de la méthode normalize(). Cette opération peut être utile pour stocker un document normalisé dans une représentation qui sera identique lors de sauvegarde et rechargement. Elle est également utile lorsque des opérations spécifiques, dépendant directement de la structure de l'arborescence spécifique à un document, doivent être pratiquées.
La méthode normalize() exprime le document sous une forme "normale". En fait, elle met à jour les références d'entité en fonction du dictionnaire d'entités de la DTD et normalise des noeuds Text, c'est-à-dire place tous les noeuds Text dans toute la profondeur de la sous arborescence en dessous du noeud courant, dans une forme "normale" incluant les attributs, où seulement le balisage (éléments, commentaires, instructions de traitement, sections CDATA et références d'entité) sépare les noeuds Text, c'est-à-dire qu'il ne doit pas y avoir de noeuds de type Text adjacents ou vides.