Page 1 sur 1

balises <image> et </image> à retranscrire

Posté : 21 oct. 2010, 22:44
par oliola
Bonjour,

J'ai réalisé un petit script d'upload de photos avec actualisation d'un fichier xml.

le fichier xml se présente sous la forme:

Code : Tout sélectionner

<?xml version="1.0" encoding="iso-8859-1"?> <imageList> <image>rubriques_biotele.jpg</image> <image>rubriques_incontinence.jpg</image> </imageList>
Voici mon code php qui modifie le document xml une fois une photo ajoutée:
$dom = new DomDocument();

$dom->load("xml/axiome.xml");

$nouveauNoeud="<image>".$name_file."</image>";

$nouvellePhoto= $dom->createTextNode($nouveauNoeud);

//Pointer sur le noeud d'insertion du nouveau clone

$photo= $dom->getElementsByTagName("imageList")->item(0);

//Insérer le clone

$photo->appendChild($nouvellePhoto);

//Sauvegarder

$dom->save("xml/axiome.xml");

mais voici le résultat obtenu dans le xml:

Code : Tout sélectionner

<?xml version="1.0" encoding="iso-8859-1"?> <imageList> <image>rubriques_biotele.jpg</image> <image>rubriques_incontinence.jpg</image> <image>logo2.png</image> </imageList>
en fait mes balises "<image>" et "</image>" sont interprétées respectivement par "<image>" et "</image>"dans le document xml.
Les symboles "<" et ">" sont problématiques.

J'ai deux questions:

1) comment solutionner ce problème?
2) comment faire en sorte que la nouvelle photo uploadée soit indiquée en première position sur le fichier xml?

D'ores et déjà un grand merci de vos réponses!

Olivier

Re: balises <image> et </image> à retranscrire

Posté : 22 oct. 2010, 18:02
par momox
createTextnode ne correspond pas a ton besoin.
Regarde du coté de createElement et de appendChild.

Re: balises <image> et </image> à retranscrire

Posté : 22 oct. 2010, 19:37
par oliola
Bonjour momox et merci de ta réponse!

Voici la solution:
define('FICHIER_XML', 'xml/axiome.xml');
 
$dom = new DomDocument();
// Pour le formatage
$dom->preserveWhiteSpace = FALSE;
$dom->formatOutput = TRUE;
// Chargement du fichier
$dom->load(FICHIER_XML);
 
// Création du nouveau noeud image 
$nouvellePhoto = $dom->createElement('image', /*utf8_encode*/($name_file)); // $name_file doit être encodé en UTF-8
 
// Insertion en tête
if ($dom->documentElement->firstChild) {
    $dom->documentElement->insertBefore($nouvellePhoto, $dom->documentElement->firstChild);
} else {
    $dom->documentElement->appendChild($nouvellePhoto);
}
 
// Sauvegarder
$dom->save(FICHIER_XML);