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:

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');
 
		}
	}
Le alert est :"Userprefs a 9 fils", sauf que la racine a 4 fils directs (et bien sur apres elle a des petits fils.

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:

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
 
function decorer(node){
 
		var datatype=racine.getAttribute("datatype");//Erreur !!!
.....
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
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>
D'apr�s vous qu'est-ce qui irait pas ?

par avance je vous remercie.