Lecture ecrire d'un xml

Résolu
Signaler
Messages postés
117
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
17 avril 2008
-
Messages postés
117
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
17 avril 2008
-
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

Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
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+
Messages postés
117
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
17 avril 2008

Salut

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

merci
@+