FAQ PHPConsultez toutes les FAQ

Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 29 juillet 2013 

 
OuvrirSommaireBibliothèques, extensionsXMLDOM XML (PHP 4)

DOM XML est une extension pour PHP 4 permettant de lire et de générer des documents XML.

Cette extension ne propose pas de méthodes orientées objet (POO).

Créé le 18 juin 2007  par Guillaume Rossolini

Lien : Manuel DOM
Lien : Cours et tutoriels XML en PHP

  • 1. Charger PHP comme module Apache
  • 2. Copier la bibliothèque php4ts.dll dans winnt/system32
  • 3. Rajouter la ligne suivante dans php.ini :
 
Sélectionnez
LoadModule php4_module c:/php/sapi/php4apache.dll

Attention, pour Apache2 il existe une dll spécifique php4apache2.dll

Quant aux extensions, outre les déclarer dans php.ini, il faut copier toutes les dlls de C:\php\dlls\*.dll dans winnt\system32

Créé le 2 mai 2003  par Cyberzoide

Lien : http://fr2.php.net/dom
Lien : http://www.fh-frankfurt.de/~igor/projects/libxml/

La classe DomDocument dipose d'une méthode document_element pour vous retourner cet élément particulier :

 
Sélectionnez
$dom = domxml_open_file('monFichier.xml');
$racine = $dom->document_element();
printf("L'élément racine se nomme : %s", $racine->node_name());
Créé le 7 novembre 2007  par Julp
 
Sélectionnez
<?php
define('FICHIER_XML', 'un_fichier_xml.xml');
define('DOCUMENT_FORMATE', TRUE);

$dom = domxml_open_file(FICHIER_XML, DOCUMENT_FORMATE ? DOMXML_LOAD_DONT_KEEP_BLANKS : 0);
$xpath = xpath_new_context($dom);
$noeuds = $xpath->xpath_eval('//text()'); // Tous les noeuds textuels
if ($noeuds->type == XPATH_NODESET) {
foreach ($noeuds->nodeset as $noeud) {
if ($noeud->node_type() == XML_DOCUMENT_NODE) {
$dom->remove_child($dom->document_element());
} else {
$parent = $noeud->parent_node();
$parent->remove_child($noeud);
}
}
}
// Ecraser le fichier existant avec les modifications apportées
//$dom->dump_file(FICHIER_XML, FALSE, DOCUMENT_FORMATE);

// Affichage pour test :
header('Content-type: text/plain');
echo $dom->dump_mem(DOCUMENT_FORMATE);
?>

La constante booléenne DOCUMENT_FORMATE permet de tenir compte des fichiers XML indentés pour qu'ils soient plus facilement lisibles et éditables par l'Homme. Pour que cela soit possible, il faut, à l'ouverture du fichier XML en lecture, indiquer que les espaces utilisés pour cette indentation doivent être ignorés (il s'agit de l'option DOMXML_LOAD_DONT_KEEP_BLANKS). On doit ensuite lui faire savoir que le document doit être formaté lors de sa sortie, ce que nous faisons via l'attribut défini à cette fin pour chaque méthode de sortie (dump_file, dump_mem, etc.).

Créé le 18 juin 2007  par Julp
Avec l'extension DOMXML, vous avez besoin de faire deux choses :
  • Lors de l'instance d'un nouvel objet DomDocument à partir de votre document XML (fonctions domxml_open_*), vous devez spécifier le deuxième paramètre facultatif pour la valeur DOMXML_LOAD_DONT_KEEP_BLANKS. Il s'agit d'une option de parsing ayant pour but d'ignorer tous les noeuds vides et/ou blancs résultant d'un (éventuel) précédent formatage. D'autant plus qu'ils compliquent souvent l'exploitation de la structure du document.
  • À l'écriture du fichier (méthodes dump_* de la classe DomDocument), vous devez positionner le paramètre optionnel format à TRUE, sa valeur par défaut étant FALSE.
Illustration :
Sélectionnez
// 1. Créer une instance de DomDocument à partir du document XML en précisant l'option DOMXML_LOAD_DONT_KEEP_BLANKS
$dom = domxml_open_file('monFichier.xml', DOMXML_LOAD_DONT_KEEP_BLANKS); // Pour un fichier
$dom = domxml_open_mem($maChaineXML, DOMXML_LOAD_DONT_KEEP_BLANKS); // Pour une chaîne de caractères
 
// Manipuler, optionnellement, l'arbre ...
 
// 2. Ecrire le document XML sous forme formatée
$dom->dump_file('monFichier.xml', FALSE, TRUE); // Dans un fichier
$output = $dom->dump_mem(TRUE); // Sous la forme d'une chaîne de caractères
Créé le 7 novembre 2007  par Julp
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2003 Developpez.com Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.