Liste dynamique

cs_bossou Messages postés 71 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 7 octobre 2011 - 18 nov. 2008 à 12:12
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 18 nov. 2008 à 17:40
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

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
18 nov. 2008 à 14:10
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]         
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
18 nov. 2008 à 15:04
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]         
0
cs_bossou Messages postés 71 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 7 octobre 2011 1
18 nov. 2008 à 15:38
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
0
cs_bossou Messages postés 71 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 7 octobre 2011 1
18 nov. 2008 à 15:41
lorsque je remplace

bu1
bu2

par








  bu1





  bu2








il m'affiche dans ma liste undefined
0

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

Posez votre question
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
18 nov. 2008 à 15:52
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]         
0
cs_bossou Messages postés 71 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 7 octobre 2011 1
18 nov. 2008 à 16:01
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.
0
cs_bossou Messages postés 71 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 7 octobre 2011 1
18 nov. 2008 à 16:01
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.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
18 nov. 2008 à 16:13
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]         
0
cs_bossou Messages postés 71 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 7 octobre 2011 1
18 nov. 2008 à 16:56
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
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
18 nov. 2008 à 17:40
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)
0
Rejoignez-nous