Page 1 sur 1

Ajouter un node et ses enfants dans un fichier xml existant

Posté : 22 nov. 2010, 16:07
par Wilco1985
Bonjour, j'ai un xml qui prend la forme suivante:

Code : Tout sélectionner

<racine> <utilisateur id='truc'>(unique) <date date='ladate'>(unique) <picture> <lien>lelien</lien> <nom>lenom</nom> <taille>lataille</taille> <picture> <picture> <lien>lelien2</lien> <nom>lenom2</nom> <taille>lataille2</taille> <picture> <picture> <lien>lelien3</lien> <nom>lenom3</nom> <taille>lataille3</taille> <picture> </date> </utilisateur> </racine>
Seul l'élément picture existe en plusieurs exemplaires, je voudrais pouvoir rajouter des elements picture, avec leurs données enfant, en php.

J'ai testé avec simplexml mais ça fait jamais exactement ce que je veux, ça met le bazar dans mon fichier xml (j'imagine que je m'y prends mal...).

Quelqu'un aurait un petit exemple de script adapté à mon cas particulier (mais qui doit être assez courant j'imagine?) avec simplexml ou dom document ou autre, pourvu que ce soit du php? :P

Re: Ajouter un node et ses enfants dans un fichier xml existant

Posté : 23 nov. 2010, 01:47
par devlop78
Pourrais-tu nous montrer ton code, déjà ?

Re: Ajouter un node et ses enfants dans un fichier xml existant

Posté : 23 nov. 2010, 12:13
par Wilco1985
Ok pas de souci, c'est juste que j'aime pas trop mettre les scripts du travail sur le net, je ne montre que la partie concernée:

J'ai effacé mon script simple xml, mais j'ai testé avec dom:
$dom = new DomDocument();
					$dom->load($folder."picasa_user".$user_id.".xml");
					$xpath = new Domxpath($dom);
					$root = $dom->getElementsByTagName('picasa')->item(0);
					$infos = $xpath->query('//picasa');
					foreach($infos as $info){
					debug("foreach passe bien ! !");
						$user= $info->getElementsByTagName('user_id')->item(0);
						$date= $user->getElementsByTagName('date')->item(0);
						
						$picture = $date->createElement ("picture");
						$date->appendChild($picture);
						$url 	 = $picture->createElement ("url",$pic_datas['picasaPhotoLink']);
						$pic_id = $picture->createElement ("pic_id", $pic_datas['picasaPicId']);
						$title = $picture->createElement ("title", $pic_datas['title']);
						$description = $picture->createElement ("description", $pic_datas['description']);
						
						$picture->appendChild($url);
						$picture->appendChild($pic_id);
						$picture->appendChild($title);
						$picture->appendChild($description);
					}
					$dom->save($folder."picasa_user".$user_id.".xml");

Les chemins de fichier xml sont corrects, les variables "$pic_datas" aussi... mais ça me met "call to undefined function "createElement"....

Re: Ajouter un node et ses enfants dans un fichier xml existant

Posté : 23 nov. 2010, 15:42
par Wilco1985
Bon problème résolu, j'utilisais un objet de domelement alors que j'étais dans domDocument... :roll: