Bonjour,
Malgr�s mes recherches sur le forum, je n'ai rien trouv�....
Je travaille sur un projet ou je dois transformer du XML pour en faire un formulaire. Ca ressemble un peu aux principe des d�corateurs... Chaque feuille de l'arbre XML est r�cup�r�e, analys�e puis �a g�n�re un �l�ment html (avec toutes les options qui vont bien...).
Un script php g�n�re le xml, et je le r�cup�re avec ajax. Pas de probl�me avec la r�cup�ration du fichier XML.
Mon probl�me se situe plut�t dans le code:
Tout d'abord mon algorithme r�cursif. J'ai l'impression qu'il est correct, mais il m'affiche quelque chose de bizarre:
Le alert est :"Userprefs a 9 fils", sauf que la racine a 4 fils directs (et bien sur apres elle a des petits fils.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 function traiter(racine){ //si l'element est une feuille, alors on peut la "décorer" if (estFeuille(racine)) { var element=decorer(racine) l_s+=element; } else { //si ce n'est pas une feuille, on creer la balise ouvrante: l_s+=baliseOuvreFerme(racine,'open'); //recuperations des fils var nbfils = racine.childNodes.length; var fils=racine.childNodes; alert(racine.nodeName+" a"+nbfils+" fils: "); for(var i = 0; i<nbfils; i++){ var element = fils[i].item(0); traiter(element); } //balise fermante l_s+=baliseOuvreFerme(racine,'close'); } }
De plus, lorsque j'essaye d'acc�der a un attribut d'un fils (par exemple element.getAttribute('datatype')), Firebug r�pond que ce n'est pas une fonction.
Du coup je suis un peu perdu, soit le fichier xml est invalide (malgr�s les validations...), soit j'�cris une erreur quelque part....
Pour info voici le d�but de la fonction d�corer:
Enfin voici le fichier xml que je souhaite analyser (on remarque que Userprefs (la racine) a bien 4 fils (et non pas neuf):
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 function decorer(node){ var datatype=racine.getAttribute("datatype");//Erreur !!! .....
D'apr�s vous qu'est-ce qui irait pas ?
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 <UserPrefs> <UserPref name="rssurl" datatype="string" default_value="" display_name="URL du Flux : "/> <UserPref name="nb" datatype="string" default_value="5" display_name="Nombre d'article : "/> <UserPref name="affichage" datatype="enum" default_value="classique" display_name="Type d'affichage : "> <EnumValue value="classique" display_value="Classique"/> <EnumValue value="agenda" display_value="Agenda"/> <EnumValue value="slideshow" display_value="Slideshow"/> <EnumValue value="ticker" display_value="Ticker"/> </UserPref> <UserPref name="fieldset1" display_name="Options supplémentaires" datatype="fieldset" default_value="" display_default="hidden"> <UserPref name="desactivecache" datatype="checkbox" default_value="" display_name="Désactiver le cache : "/> <UserPref name="h" datatype="string" default_value="" display_name="Hauteur : "/> <UserPref name="w" datatype="string" default_value="" display_name="Largeur : "/> <UserPref name="css" datatype="string" default_value="" display_name="URL d'une CSS : "/> <UserPref name="himg" datatype="string" default_value="" display_name="Hauteur des vignettes : "/> <UserPref name="wimg" datatype="string" default_value="" display_name="Largeur des vignettes : "/> </UserPref> </UserPrefs>
par avance je vous remercie.
Partager