SimpleXML - Ajouter au debut

Répondre
Keika
Keika
Déconnecté
Le PHP --> C'est dur !
Salut,

j'essaye de manipuler du XML, alors mon code fonctionne, j'ajoute correctement mes noeuds. Maintenant, j'aimerais que les noeuds soient ajouter au debut du fichier et non pas a la fin.

Ici mon code:
  1. <?php
  2. //We set variables
  3.    $flyer = '11.jpg'/*$_POST['flyer']*/ ; 
  4.    $heading = 'Test'/*$_POST['heading']*/ ; 
  5.    $date = 'Tuesday'/*$_POST['date']*/ ; 
  6.    $link = "http://xxx.com/imgs/".$flyer ; 
  7.    $xml = simplexml_load_file('test.xml'); 
  8.    
  9.    $promo = $xml->addChild('promo') ; 
  10.    $promo->addChild('thumb', 'imgs/'.$flyer) ; 
  11.    $promo->addChild('heading', $heading) ; 
  12.    $promo->addChild('date', $date) ; 
  13.    $promo->addChild('large', 'imgs/'.$flyer) ; 
  14.    $promo->addChild('weblink', $link) ; 
  15.    
  16.    //$file = fopen('test.xml', 'w') ;
  17.    $xml->asXML('test.xml') ;  
  18. ?> 


Une idee ?
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
C'est possible de choisir la position du noeud avec simpleXml ?
J'avoue avoir un vieux doute la.

Personnellement, j'utilise simpleXml juste pour parser des fichiers XML afin de les insérer en base, mais dès que je manipule du XML, j'utilise de préférence l'extension DOM qui offre énormément plus de possibilité.

Quelqu'un ici a eu le même soucis que toi, et il est passé aussi au DOM.
Keika
Keika
Déconnecté
Le PHP --> C'est dur !
Merci GLOBULE,

j'ai bien essaye et reussit avec cette solution.

j'ai donc ce code:

  1. <?php
  2.  
  3. $dom = new DomDocument(); 
  4.    $dom->load('test.xml'); 
  5.    $racine=$dom->documentElement; 
  6.  
  7.    //$message=$dom->createElement("p");
  8.    //$message=$racine->appendChild($message);
  9.    
  10.    $promo = $dom->createElement('promo'); 
  11.    $elementThumb = $dom->createElement('thumb', 'imgs/'.$flyer) ; 
  12.    $elementHeading = $dom->createElement('heading', $heading) ; 
  13.    $elementDate = $dom->createElement('date', $date) ; 
  14.    $elementFlyer = $dom->createElement('large', 'imgs/'.$flyer) ; 
  15.    $elementWeblink = $dom->createElement('weblink', $link) ; 
  16.    
  17.    //Insère $div avant le 1er fils de $racine
  18.    $promo->appendChild($elementThumb); 
  19.    $promo->appendChild($elementHeading); 
  20.    $promo->appendChild($elementDate); 
  21.    $promo->appendChild($elementFlyer); 
  22.    $promo->appendChild($elementWeblink); 
  23.    $racine->insertBefore($promo, $racine->firstChild); 
  24.    
  25.    $dom->save('test.xml') ;  
  26. ?> 


Maintenant, je vais etre pointilleux et ennuyant. Le code s'integre au fichier de facon lineaire. Donc pour le script c'est pas un vrai soucis mais pour la facilite de lecture ce n'est pas l'ideal. Une idee sur comment indente le code sauvegarde au fichier ?

Merci
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Pour ca, tu as l'extension tidy qui peut reformater un XML :)
(ca existe aussi en binaire standalone pour pouvoir le faire tourner sur un XML en local sans appeler PHP).
Keika
Keika
Déconnecté
Le PHP --> C'est dur !
hmm, peut etre que je ne vais pas pousser jusque la..
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Je penses que tu as raison, surtout qu'en général, un browser les affiche bien :)
Donc bon, l'ouvrir dans un editeur de texte ou un browser, c'est "pareil".
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Bretagne - php - Moto - Kit graphique