Liste dynamique

Signaler
Messages postés
71
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
7 octobre 2011
-
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
-
Bonjour.
j'ai un fichier xml contenant une liste d'élements que je voudrais récupérer dans ma page html. seulement lorsque je lance mon appli je récupère seulement le dernier élément. quelqu'un pourrait-il m'aider !! j'ajoute mon code afin d'etre mieux compris.

var liste_userlabel = new Array();

//*********************

// utilisation d'un fichier XML

var xmlDoc;
var moz = (typeof document.implementation != "undefined") && (typeof document.implementation.createDocument != "undefined");
var ie = (typeof window.ActiveXObject != "undefined");

function LoadXML(xmlFile){
if (moz) {
xmlDoc = document.implementation.createDocument("", "doc", null);
xmlDoc.load(xmlFile);
}
else if (ie) {
// Créer une instance d'un objet XML.
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
// Vérifier qu'elle est traitée entièrement avant de poursuivre avec le code.

//Enforce download of XML file first. IE only.
xmlDoc.async=false;
while(xmlDoc.readyState != 4) {};
xmlDoc.load(xmlFile);
}
if (typeof xmlDoc!="undefined"){
if (window.ActiveXObject){ //if IE,  execute script
ProcessXML();
}
else{ //else if NS6 of mozilla, execute script when XML object has loaded
xmlDoc.onload = ProcessXML;
}
}
}

function ProcessXML() {
// récupération du contenu des noeuds pour reconstituer la variable
var xmlFile = xmlDoc.getElementsByTagName("userLabel");
var nb_userlabel = xmlFile.length;
for ( i=0; i < nb_userlabel; i++ ) {
    var collection_child = xmlFile[i].childNodes;
    var nb_child = collection_child.length;
    var userLabel;
    for (j=0 ; j < nb_child; j++) {
        var noeud = collection_child[j];
                if( noeud.nodeType == 1 ) {
                    var name = noeud.nodeName;
                            switch (name)
                            {
                               case "userLabel":
                               userLabel= noeud.firstChild.nodeValue;
                               break;
                               default:
                               break;
             
                            }
                        }
            }
liste_userlabel[i] = new Array(userLabel);
}
}
LoadXML("C:\\userLabel\\Sub_Segment.xml");

10 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
bonjour,
je ne comprend pas ce que tu cherches à faire avec : liste_userlabel[i] = new Array(userLabel);
ça contient un nombre ?
mais en fait, je ne comprend d'ailleurs pas le but global....
       peut-être car on n'a pas un extrait du xml ?

pourquoi ne le faire qu'une fois par  getElementsByTagName("userLabel") ?
>>e récupère seulement le dernier élément.
lequel d'élement ? getElementsByTagName("userLabel") ou pour la variable userlabel ?
         c'est d'ailleurs ambigüe ces noms...

Cordialement

          Bul [mon Site] [M'écrire]         
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
restons sur le forum si tu veux bien....
1° ça peut intéresser d'autres personnes,
2° mais surtout, pour toi, il y a d'autres intervenants !
    donc plus de compétences et de chances de réponses....
<hr size="2" width="100%" />fichier xml :

bu1
bu2

comment veux-tu utiliser ça ?
il faudrait avoir un truc du style :
<gras>mon Site] [M'écrire]         
Messages postés
71
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
7 octobre 2011
1
le fichier xml est rempli à l'aide d'une page html donc on peut  avoir une longue liste de et je veux charger chaque élément contenu dans dans ma liste qui se trouve dans la page html(bu.html).donc si tu sais comment le faire STP montre le moi. je suis bloqué dans mon travail à cause de cette partie et j'ai des contraintes de temps.Merci
Messages postés
71
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
7 octobre 2011
1
lorsque je remplace

bu1
bu2

par








  bu1





  bu2








il m'affiche dans ma liste undefined
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
ah ben... faut modifier ton javascript en conséquence.

var xmlFile = xmlDoc.getElementsByTagName("a");   déjà.
[ plus simple  d'étudier directement xmlDoc.getElementsByTagName("b"); ? ]

mais ton instruction liste_userlabel[i] = new Array(userLabel); 
        ne fonctionnera pas, alors... que veux tu faire ?

          Bul [mon Site] [M'écrire]         
Messages postés
71
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
7 octobre 2011
1
je veux tout simplement charger la liste d'élements contenus dans les balises . donc s'il y a une alternative à mon javascript ça m'interesse.
Messages postés
71
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
7 octobre 2011
1
je veux tout simplement charger la liste d'élements contenus dans les balises . donc s'il y a une alternative à mon javascript ça m'interesse.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
charger ? ben ça l'est ! tu as chargé le fichoer xml ( ** )

travailler sur le contenu  ?

var x = xmlDoc.getElementsByTagName("b");
for ( i=0; i < x.length; i++ )
{   utiliser x[i].firstChild.nodeValue     
               tu obtiens bu1 puis bu2 de ton exemple
}

( ** ) quoique : pas vérifié le reste !
..
.xmlDoc.async=false;
while(xmlDoc.readyState != 4) {};
xmlDoc.load(xmlFile);
}
if (typeof xmlDoc!="undefined"){
if (window.ActiveXObject){ //if IE,  execute script
...
tout ça me semble... disons,  bizarre.

          Bul [mon Site] [M'écrire]         
Messages postés
71
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
7 octobre 2011
1
merci pour ton script mais je ne comprend pas. STP tu pourrais etre un peu plus clair? c'est quoi utiliser??
tu peux me mettre le script complet STP. merci
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
16
Bonjour à tous,
tentative d'explication simple et
claire !!!!!!!!!!!!!!!
function ProcessXML() {
  //--

  var xmlFile = xmlDoc.getElementsByTagName("userLabel");

  var nb_userlabel = xmlFile.length;
  //--
boucle FOR i
  for (i = 0; i < nb_userlabel; i++) {

    var collection_child = xmlFile[i].childNodes;
    var nb_child =
collection_child.length;
    var userLabel;
     //-- boucle FOR j
    for (j = 0; j <
nb_child; j++) {
      var noeud = collection_child[j];

      document.write( j +noeud +'
');
      if (noeud.nodeType
1) {
        var name = noeud.nodeName;
        switch (name) {

          case "userLabel":
             userLabel =
noeud.firstChild.nodeValue; // Initialisation de useLabel
(1)
          break;
          default:

            break;
        }
      }
    } // Fin de la boucle FOR j
    //-- tu est dans la boucle FOR

    liste_userlabel[i] = new Array(userLabel);
  }
}

En fin de boucle FOR j, quel que soit le nombre de userLabel lus
tu ne stockera que la dernière valeur lue attendu que tu la réinialise à chaque
passage voir (1)

Pour tout récupérer il te faut
soit concaténer en
écrivant par exemple
userLabel
+= noeud.firstChild.nodeValue;
soit récupérer sous forme de tableau,
exemple
T_Result[
T_Result.length] = userLabel;
soit concaténer sous forme de tableau

userLabel +=
noeud.firstChild.nodeValue +'&';
et tu split aprés
soit....

Tout ceci bien sur
sans préjugé du reste, il va sans dire.
;O)