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
13
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
1811
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
4 septembre 2022
145
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
13
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
13
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