Récupérer plusieurs lignes qui ont le même nom en JS à partir d'un fichier XML

Résolu
mastertom Messages postés 8 Date d'inscription lundi 8 octobre 2007 Statut Membre Dernière intervention 24 mai 2009 - 22 mai 2009 à 18:52
mastertom Messages postés 8 Date d'inscription lundi 8 octobre 2007 Statut Membre Dernière intervention 24 mai 2009 - 24 mai 2009 à 20:09
Bonjour,

Je génère un fichier xml grâce à un fichier php :






 



<?
xml version= "1.0" encoding="utf-8"
?>







-

<


sondage


>











 



<


id


>


4


</


id


>











 



<


theme


>


fporekfpeok


</


theme


>











 



<


presentation


>


FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok FREZPOFLKPOKkcpoez kzeok


</


presentation


>











 



<


dpt


>


33


</


dpt


>











 



<


cp


>


33640


</


cp


>











 



<


date


>


2009-05-22 00:12:07


</


date


>











 



<


budget


>


5000


</


budget


>











 



<


mise


>


4374


</


mise


>











 



<


photo


>


upload/projet/mini_1_090522124934.jpg


</


photo


>











 



<


description


>


po


</


description


>











 



<


photo


>


upload/projet/mini_0_090522124934.jpg


</


photo


>











 



<


description


>


desese


</


description


>











 



<


photo


>


upload/projet/0_090522124435.gif


</


photo


>











 



<


description


/>









 



</


sondage


>

Ensuite dans un fichier .js je récupère chaques balise grace à :

var mise = XML.getElementsByTagName("mise")[0].childNodes[0].nodeValue ;  //pour récupérer la ligne 'mise' par exemple.
Le problème c'est que j'ai plusieurs balise 'photo' et 'description' et je ne sais pas comment faire pour toutes les récupérer !

Pouvez-vous m'aider ?

8 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
23 mai 2009 à 08:33
bonjour,

getElementsByTagName c'est déjà un tableau

if ( XML.getElementsByTagName('photo').length )
{ for ( var n=0; n< XML.getElementsByTagName('photo').length; n++ =
{ gérer XML.getElementsByTagName('photo').[n].firstChild.nodeValue }
}

ou pas loin....

@+
3
@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 153
22 mai 2009 à 19:41
bonjour tu recupere le numerode l'indexe




ex:

XML.getElementsByTagName("


photo

')[5];
0
mastertom Messages postés 8 Date d'inscription lundi 8 octobre 2007 Statut Membre Dernière intervention 24 mai 2009
22 mai 2009 à 23:54
 RE,


Oui sa je le savait, par ex si j'ai 2 photo je fait :




XML.getElementsByTagName("photo")[1].childNodes[0].nodeValue ; pour récupérer le seconde photo, le problème c'est que le nombre de photo varie de 0 à 3 donc je pourrai faire:





XML.getElementsByTagName("photo")[0].childNodes[0].nodeValue ;//récupère la première photo






XML.getElementsByTagName("photo")[1].childNodes[0].nodeValue ;





XML.getElementsByTagName("photo")[2].childNodes[0].nodeValue ;


//récupère la troisième photo, mais si un sondage ne possède pas de photo j'obtient une erreur parceque bien sur les balise photo n'existe pas.





Je pense qu'il faudrai que je fasse une boucle et mettre le tout dans un tableau mais je ne sais pas comment m'y prendre
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
23 mai 2009 à 16:23
il fallait lire :
for ( var n=0; n< XML.getElementsByTagName('photo').length; n++ )

  { gérer XML.getElementsByTagName('photo')[n].firstChild.nodeValue }
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mastertom Messages postés 8 Date d'inscription lundi 8 octobre 2007 Statut Membre Dernière intervention 24 mai 2009
24 mai 2009 à 16:09
Re,

Merci de ton aide 'Bul3' ^^ . ça marche presque ! Avec ça :

if ( XML.getElementsByTagName('photo').length )
{
var chemin = new Array(); // crée le tableau
 for ( var n=0; n < XML.getElementsByTagName('photo').length; n++)
  {
  var photo = XML.getElementsByTagName('photo')[n].childNodes[0].nodeValue;
  chemin.unshift(photo); //ajoute les chemins  dans un tableau
  }
}
//une fois les chemins des photos récupérer on les affiches
for (var i=0;i<3;i++){
var new_element = '

'; //devrai afficher chaques images
document.getElementById(getElem).innerHTML = new_element ;
}

avec ce code je réussi a rentré tout les chemins de mes photos dans le tableau 'chemin', par exemple si je fait alert(chemin[0]); cela m'affiche la première photo.
Mais ça m'en affiche une par une et non pas mes trois images côte à côte comme je voudrais.
En php j'ai réussi à afficher toutes mes photos avec le même genre de boucle grâce à :

for($i=0;$i<3;$i++) //on boucle autant de fois qu'il y a de photo
    {
        echo '&nbsp;'; // où $up_chemin_array contient les chemins de mes photos...
    }

Voilà, quelqu'un serait-il le faire en JS ?

Merci d'avance.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
24 mai 2009 à 16:26
pourquoi mettre dans un array ?
je me cite ( en rectifiant ) :
>>getElementsByTagName c'est déjà un array !!!

if ( XML.getElementsByTagName('photo').length )
{ for ( var n=0; n< XML.getElementsByTagName('photo').length; n++ )
{ gérer XML.getElementsByTagName('photo')[n].firstChild.nodeValue }
}

>>$up_chemin_array contient les chemins de mes photos.
euh... c'est coté serveur ça ?
dans ce cas... le problème est tout autre
qu'un fichier xml....
tu n'as peut-être pas encore compris comment
les langages sur le serveur ( asp, php.... )
communiquent avec le micro, le client...
Ils ne communiquent pas !!!! le langage
serveur génère du "texte", et rien d'autres,
qui va être affiché ou traité (si ajax)
par le html/javascript
0
mastertom Messages postés 8 Date d'inscription lundi 8 octobre 2007 Statut Membre Dernière intervention 24 mai 2009
24 mai 2009 à 17:57
Ce bout de code ne concerne pas mon problème :
 for($i=0;$i<3;$i++) //on boucle autant de fois qu'il y a de photo
    {
   
    echo '&nbsp;'; // où
$up_chemin_array contient les chemins de mes photos...
    }
c'était juste pour dire que j'avais réussi a récupérer mes photos en php/mysql et que j'aimerais faire la même chose mais cette fois en javascript grâce à mon fichier XML cité plus haut.
 Et effectivement en faisant :

if ( XML.getElementsByTagName('photo').length )
{

 for ( var n=0; n < XML.getElementsByTagName('photo').length; n++)
  {
  var photo = XML.getElementsByTagName('photo')[n].childNodes[0].nodeValue;

  var new_element = '

';
  document.getElementById(getElem).innerHTML = new_element ;
  }


j'arrive au même résultat ^^ . Mais le problème est toujours présent, sa m'affiche les images une par une et non pas les 2 ou 3 photos que j'ai récupérer, à la suite comme désiré.
0
mastertom Messages postés 8 Date d'inscription lundi 8 octobre 2007 Statut Membre Dernière intervention 24 mai 2009
24 mai 2009 à 20:09
J'ai enfin trouvé la solution :

var photo = XML.getElementsByTagName('photo');
              var p = '';
              for(i=0; i&nbsp;';
                document.getElementById(getElem).innerHTML = p;
              }

Si ça peut aider quelqu'un !

A+

 
0
Rejoignez-nous