SimpleXML - Ajouter au debut

Répondre
Keika
le 22/11/2010 à 09:36
Keika
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:
<?php
//We set variables
$flyer = '11.jpg'/*$_POST['flyer']*/ ;
$heading = 'Test'/*$_POST['heading']*/ ;
$date = 'Tuesday'/*$_POST['date']*/ ;
$link = "http://xxx.com/imgs/".$flyer ;
$xml = simplexml_load_file('test.xml');

$promo = $xml->addChild('promo') ;
$promo->addChild('thumb', 'imgs/'.$flyer) ;
$promo->addChild('heading', $heading) ;
$promo->addChild('date', $date) ;
$promo->addChild('large', 'imgs/'.$flyer) ;
$promo->addChild('weblink', $link) ;

//$file = fopen('test.xml', 'w') ;
$xml->asXML('test.xml') ;
?>


Une idee ?
Le PHP --> C'est dur !
LA GLOBULE
le 23/11/2010 à 09:15
LA GLOBULE
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
le 24/11/2010 à 16:02
Keika
Merci GLOBULE,

j'ai bien essaye et reussit avec cette solution.

j'ai donc ce code:

<?php

$dom = new DomDocument();
$dom->load('test.xml');
$racine=$dom->documentElement;

//$message=$dom->createElement("p");
//$message=$racine->appendChild($message);

$promo = $dom->createElement('promo');
$elementThumb = $dom->createElement('thumb', 'imgs/'.$flyer) ;
$elementHeading = $dom->createElement('heading', $heading) ;
$elementDate = $dom->createElement('date', $date) ;
$elementFlyer = $dom->createElement('large', 'imgs/'.$flyer) ;
$elementWeblink = $dom->createElement('weblink', $link) ;

//Insère $div avant le 1er fils de $racine
$promo->appendChild($elementThumb);
$promo->appendChild($elementHeading);
$promo->appendChild($elementDate);
$promo->appendChild($elementFlyer);
$promo->appendChild($elementWeblink);
$racine->insertBefore($promo, $racine->firstChild);

$dom->save('test.xml') ;
?>


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
Le PHP --> C'est dur !
Keika
le 24/11/2010 à 16:22
Keika
hmm, peut etre que je ne vais pas pousser jusque la..
Le PHP --> C'est dur !
LA GLOBULE
le 24/11/2010 à 16:47
LA GLOBULE
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

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours