Lecture ecrire d'un xml

Résolu
atchoumen Messages postés 117 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 avril 2008 - 1 août 2007 à 11:45
atchoumen Messages postés 117 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 avril 2008 - 1 août 2007 à 19:10
Bonjour,

Je suis en train d'adapter un diaporama, cependant j'aurai besoin d'aide.

Je vais réaliser une partie d'administration pour uploader des images dans le répertoire. Mon probléme et que toutes les images de tous les albums sont melangé dans le meme dossier, donc meme en listant le répertoire il m'est impossible de savoir qu'elle image appartient a un album.
Je souhaiterais donc savoir comme ecrire une ligne contenant le nom de la photo uploadé dans le répertoire à la suite des autres images dans un des deux albums (cf code ci-dessous)

Voici le code

<?xml version= "1.0" encoding="iso-8859-1"?>
<gallery>


A perfect shot of a white tiger walking in the woods
This beast scared us by giving us a really sudden shot.


A perfect shot of a white tiger walking in the woods
This beast scared us by giving us a really sudden shot.


<language>
<string id ="please wait" value="Please wait" />
<string id="loading" value="Loading" />
<string id="previous page" value="Previous Page" />
<string id="page % of %" value="Page % of %" />
<string id="next page" value="Next Page" />
</language>

</gallery>

Je voudrai donc par exemple ajouter la ligne
This beast scared us by giving us a really sudden shot.
dans l'album toto à la suite des deux autres  (c10 etant l'image uploadé)

J'espere que j'ai été assez clair et que quelqu'un aura une solution
Merci

2 réponses

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
1 août 2007 à 12:57
Salut,

Il le faire en plusieurs étapes :

0. Soit :
$liste_album = 'liste_album.xml'; // Le nom du fichier XML en question
$nom_album = 'Toto'; // Le nom de l'album où l'on doit ajouter l'image

1. Ouvrir le fichier XML en le "parsant" dans un objet DOM
$doc = new DomDocument();
$doc->load($liste_album);

2. Trouver l'album dans lequel ajouter l'image
$xpath = new DomXpath( $doc );
$album = $xpath->query("/gallery/albums/album[@title='$nom_album']")->item(0);
if ( ! $album instanceof DomNode ) throw new Exception('Album non trouvé');

3. Créer l'entrée XML pour l'image :
$image = $doc->createElement('image', $text);
$image->setAttribute('image','c10.jpg');
$image->setAttribute('thumbnail','c10.jpg');
// ... etc

4. ajouter l'image :
$album->appendChild($image);

5. Sauver le nouveau XML
$doc->save($liste_album);

!!!! Attention !!!!
Il faut, je pense, utiliser un système de [MUTEX MUTEX] afin que deux chargement d'image ne puisse ecrire dans le fichier en même temps... A toi de trouver une solution élégante à ce petit problème...

A+
3
atchoumen Messages postés 117 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 avril 2008
1 août 2007 à 19:10
Salut

Merci pour ton aide j'ai adapté une ou deux lignes mais sinon nickel

merci
@+
0
Rejoignez-nous