T0T0
Invité n'ayant pas de compte PHPfrance
05 déc. 2007, 10:21
Ok, voici mon test, en 2 étapes.
Etape 1 :
Lancer le fichier 'page1.php'
Code : Tout sélectionner
<?php
//création d'un nouvel objet document
$dom = new DOMDocument('1.0');
//création de l'élément racine 'contients'
$continents = $dom->appendChild($dom->createElement('continents'));
//ajout de l'élément 'Europe' comme enfant de 'continents'
$Continent = $continents->appendChild($dom->createElement('Europe'));
//ajout de pays européens comme enfants de 'Europe'
$Pays = $Continent->appendChild($dom->createElement('pays', 'France'));
$Pays = $Continent->appendChild($dom->createElement('pays', 'Espagne'));
//on essaye de garder l'indentation
$dom->formatOutput = true;
$dom->normalizeDocument();
//on sauvegarde dans un fichier
$dom->save('pays.xml');
?>
Le fichier 'page1.php' génère un fichier 'pays.xml' dans lequel l'indentation fonctionne bien.
Etape 2 :
Lancer le fichier 'page2.php'
Code : Tout sélectionner
<?php
//création d'un nouvel objet document
$dom = new DOMDocument('1.0');
//ouverture du fichier précédemment créé
$dom->load('pays.xml');
//ajout de l'élément 'Asie', comme enfant de 'continents'
$continents = $dom->documentElement;
$Continent = $continents->appendChild($dom->createElement('Asie'));
//ajout de pays asiatiques comme enfants de 'Asie'
$Pays = $Continent->appendChild($dom->createElement('pays', 'Japon'));
$Pays = $Continent->appendChild($dom->createElement('pays', 'Chine'));
//on essaye de garder l'indentation
$dom->formatOutput = true;
$dom->normalizeDocument();
//on sauvegarde dans un fichier
$dom->save('pays.xml');
?>
Le fichier 'page2.php' ajoute des éléments enfants dans l'arbre XML du fichier 'pays.xml'
Mais avec un code pourtant identique au précédent, l'indentation ne fonctionne plus : les derniers éléments ajoutés tiennent sur une seule ligne.
/!\ Si vous faites ce test, il ne faut pas ouvrir le fichier 'pays.xml' avec un navigateur internet, car ce dernier le met en forme automatiquement. Pour comprendre le problème d'indentation, il faut l'ouvrir avec Notepad++ par exemple.