récursivité en javascript
Bonjour, j'essaye de faire une fonction xml2tab qui prend des fichiers xml et les transforme en tableau
pour cela j'ai fait la fonction suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| function xml2tab(xml,tab){//prend un objet xml et un tableau et remplis ce-dernier a partir du xml
if (xml.hasAttributes()){//si le neud a des attributs
alert("il y a "+xml.attributes.length+" attributs");
for (i = 0; i < xml.attributes.length; i++) {//pour tout les attributs on les met dans le tableau
alert("attribut "+i);
tab[xml.attributes[i].nodeName] = xml.attributes[i].nodeValue;
}
}
if (xml.hasChildNodes()) {//si le neud a des "enfants"
alert ("il y a "+xml.childNodes.length+" childNodes");
for (j = 0; j < xml.childNodes.length; j++) {
//pour tous les enfants on crée un tableau contenant le tableau généré par la fonction xml2tab avec chaque enfant de l'objet xml de depart
alert("childnode "+j);
var newxml = xml.childNodes[j]
tab[xml.childNodes[j].nodeName] = new Array();
tab[xml.childNodes[j].nodeName] = xml2tab(newxml,tab[xml.childNodes[j].nodeName]);
alert("childnode "+j+" terminé");
}
}
return tab;
} |
Qui est lancée sur le xml suivant :
Code:
1 2 3 4
| <parametre page="3" nbparpage="30">
<corps val_max_credit="100.00" val_carton="3.00" nb_joueur="200" nb_carton="13" gain_max="20.00"/>
<entete val_max_credit="Valeur maximum de credit" val_carton="Val Carton" nb_joueur="Nombre Joueurs" nb_carton="Nombre de cartons" gain_max="Gain maximum" txq1="Taux simple quine 1" txq2="Taux simple quine 2" txdq="Taux double quine" txcp="Taux carton plein"/>
</parametre> |
Grâce aux alert je vois que je passe bien par tout dans mon tableau, mais la valeur des attributs de entete et corps sont undefined, le tableau est le suivant :
tab[page] = 3
tab[nbparpage] = 30
tab[corps] =
tab[entete] =
tab[corps][val_max_credit] = undefined
tab[corps][val_carton] = undefined
tab[corps][nb_joueur] = undefined
tab[corps][nb_carton] = undefined
tab[corps][gain_max] = undefined
tab[entete][val_max_credit] = undefined
tab[entete][val_carton] = undefined
tab[entete][nb_joueur] = undefined
tab[entete][nb_carton] = undefined
tab[entete][gain_max] = undefined
tab[entete][txq1] = undefined
tab[entete][txq2] = undefined
tab[entete][txdq] = undefined
tab[entete][txcp] = undefined
Je ne vois donc pas pourquoi les attributes.value sont undefined alors que les attributes.name sont bons ..... merci d'avance ....