FAQ PHP
FAQ PHPConsultez toutes les FAQ
Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 18 septembre 2021
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 : 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 :
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 : https://www.php.net/manual/en/book.dom.php
Lien : https://www.frankfurt-university.de/
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());
<?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.).
- 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.
// 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