modification xml par dom

modification xml par dom - PHP - Programmation

Marsh Posté le 06-06-2007 à 10:02:36    

Bonjour,
 
j'aimerais pouvoir modifier un fichier xml avec dom, mais impossible, j'ai eu beau suivre des tutorials sur internet, il me retourne toujours une erreur et je n'arrive pas à comprendre.
 
voici mon xml :
 
<?xml version='1.0' encoding='iso-8859-1' ?>
<images>
 <image>image1</image>
 <image>image2</image>
</images>
 
 
et voici mon fichier php :
 
<?php
$dom = new DOMDocument;
$dom->load('images.xml');
$newImage = $dom->createElement("image" );
$imageName = $dom->createTextNode("image3" );
$newImage->appendChild($imageName);
$images = $dom->getElementsByTagName("images" );
$images->appendChild($newImage);
$dom->save('images.xml');
?>
 
Avec easyPHP 2, il me retourne :
Fatal error: Call to undefined method DOMNodeList::appendChild() in C:\Documents and Settings\Utilisateur\Mes documents\TestsPHP\modify_xml.php on line 8
 
Sur une page perso Free :
Warning: domdocument() expects at least 1 parameter, 0 given in /mnt/108/sdb/a/a/overlex/modify_xml.php on line 2
Fatal error: Call to undefined function: load() in /mnt/108/sdb/a/a/overlex/modify_xml.php on line 3
 
 
Merci de bien vouloir m'aider car là je ne sais vraiment plus comment faire.
 

Reply

Marsh Posté le 06-06-2007 à 10:02:36   

Reply

Marsh Posté le 06-06-2007 à 10:59:37    

getElementsByTagName te retourne une collection de noeud ( un tableau). Il faut donc prendre un des elements pour pouvoir faire l'appendChild dessus ( vraisemblablement firstChild).
 
Pour ton probleme sur free, il me semble que par défaut les .php utilisent PHP4 chez free. Et il s'avère que l'extension DOM n'est pas activé sur php4 chez eux( uniquement domxml). Il faut que tu renommes sur fichier en .php5

Reply

Marsh Posté le 06-06-2007 à 12:05:26    

Merci bien, j'ai réussi à résoudre mes problèmes.
 
Pour Free, il suffit de renommer le fichier en .php5 et nickel.
 
Pour le fichier php, j'ai changé comme ceci :
$images = $dom->getElementsByTagName("images" )->item(0);
 
il suffisait juste de rajouter le item() après. Par contre en ajoutant firstChild, ca ne génère pas d'erreur mais ca ne modifie pas le fichier xml.
 
merci encore pour ton aide  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed