Ajouter un node et ses enfants dans un fichier xml existant

Petit nouveau ! | 5 Messages

22 nov. 2010, 16:07

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

devlop78
Invité n'ayant pas de compte PHPfrance

23 nov. 2010, 01:47

Pourrais-tu nous montrer ton code, déjà ?

Petit nouveau ! | 5 Messages

23 nov. 2010, 12:13

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"....

Petit nouveau ! | 5 Messages

23 nov. 2010, 15:42

Bon problème résolu, j'utilisais un objet de domelement alors que j'étais dans domDocument... :roll: