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

Signaler
Messages postés
8
Date d'inscription
lundi 8 octobre 2007
Statut
Membre
Dernière intervention
24 mai 2009
-
Messages postés
8
Date d'inscription
lundi 8 octobre 2007
Statut
Membre
Dernière intervention
24 mai 2009
-
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

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
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....

@+
Messages postés
1784
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
28 avril 2021
128
bonjour tu recupere le numerode l'indexe




ex:

XML.getElementsByTagName("


photo

')[5];
Messages postés
8
Date d'inscription
lundi 8 octobre 2007
Statut
Membre
Dernière intervention
24 mai 2009

 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
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
il fallait lire :
for ( var n=0; n< XML.getElementsByTagName('photo').length; n++ )

  { gérer XML.getElementsByTagName('photo')[n].firstChild.nodeValue }
Messages postés
8
Date d'inscription
lundi 8 octobre 2007
Statut
Membre
Dernière intervention
24 mai 2009

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.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
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
Messages postés
8
Date d'inscription
lundi 8 octobre 2007
Statut
Membre
Dernière intervention
24 mai 2009

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é.
Messages postés
8
Date d'inscription
lundi 8 octobre 2007
Statut
Membre
Dernière intervention
24 mai 2009

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+