Accueil
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi Eclipse MS-Office SQL & SGBD Oracle  4D  Business Intelligence
logo
Sommaire > XML > DOM XML (PHP 4)
        Qu'est-ce que DOM XML ?
        Comment installer DOM XML avec PHP4 ?
        Comment obtenir l'élément racine du document ?
        Comment supprimer les noeuds correspondant à une expression XPath en PHP4 ?
        Comment formater un document XML pour affichage ?



Qu'est-ce que DOM XML ?
auteur : Guillaume Rossolini
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).

lien : fr Manuel DOM XML
lien : fr Cours et tutoriels XML en PHP

Comment installer DOM XML avec PHP4 ?
auteur : Cyberzoide
  • 1. Charger PHP comme module Apache
  • 2. Copier la bibliothèque php4ts.dll dans winnt/system32
  • 3. Rajouter la ligne suivante dans php.ini :
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

lien : http://php.net/domxml
lien : http://www.fh-frankfurt.de/~igor/projects/libxml/

Comment obtenir l'élément racine du document ?
auteur : Julp
La classe DomDocument dipose d'une méthode document_element pour vous retourner cet élément particulier :
$dom = domxml_open_file('monFichier.xml');
$racine = $dom->document_element();
printf("L'élément racine se nomme : %s", $racine->node_name());

Comment supprimer les noeuds correspondant à une expression XPath en PHP4 ?
auteur : Julp
<?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.).


Comment formater un document XML pour affichage ?
auteur : 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 :
// 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


Consultez les autres F.A.Q.


Les sources présentés sur cette page sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2003  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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com