Page 1 sur 1

lecture d'un fichier XML

Posté : 21 déc. 2005, 13:17
par jeff
salut
j'aimerai lire un fichier mais j'ai des erreur dans mon code a chaque ligne et pourtant c'est pas long

Code : Tout sélectionner

<root> <action arg0="argument0".... argn="argumentn">nomdefonction</action> <message>jvdj</message> </root>
et le code
function action(XML)
{
	cleanWhitespace(XML.documentElement);
	var xml=XML.documentElement;
	var functions=xml.getElementsByTagName('action')[0].firstChild.nodeValue;
	//debogage
	/*var functions=xml.getElementsByTagName('action')[0];
	lediv = document.createElement("div");
	for(i in functions){
	lediv.innerHTML += i+ " : "+functions[i]+"<br />";
	}
	document.body.appendChild(lediv);*/
	//
	alert(functions);
	if(xml.getElementsByTagName('action')[0].hasAttributes()){
		var args=new Array();
		args=xml.getElementsBytagName('action')[0].getAttribute();
		alert(args);
		functions(xml,args);
	}else{
		alert('yes');
		eval(functions(xml));
	}
	alert(functions);
}
je suit bloquer sur hasAttributes()
je veut recuperer tout les attributs pour les mettre dans la fonction

Posté : 21 déc. 2005, 14:37
par jeff
bon ca fonctionne pour la lecture des attribt mais comment executer une fonction a partir d'une chaine
avec eval surement mais je n'y arrive pas

Posté : 21 déc. 2005, 14:45
par jeff
rectification sous
ff j'ai ce message d'erreur mais mon tableau est bien rempli

Code : Tout sélectionner

Erreur : [JavaScript Error: "invalid array length" {file: "http://localhost/projet_ing/template/templates/js/groupe.js" line: 90}] Fichier source : http://localhost/projet_ing/template/templates/js/groupe.js Ligne : 90
et sous ie ca plante ici

Code : Tout sélectionner

var args=new Array();
code complet

Code : Tout sélectionner

if(node.hasAttributes()){ var args=new Array(); for(i in node.attributes){ args[i]=node.attributes[i].nodeValue; alert(i+'---'+args[i]); } //eval(functions(xml,args)); }else{ alert('yes'); eval(functions(xml)); }

Posté : 21 déc. 2005, 14:53
par Cyrano
Attention, le DOM n'est pas également interprété sous IE et Firefox : J'ai pu découvrir relativement récemment que les retours de lignes sont ajoutés dans l'arborescence hiérarchique du DOM sous l'un et pas sous l'autre. On règle le problème en supprimant tous les retours de ligne du code, mais ça a le défaut de rendre le code beaucoup moins lisible :?

Posté : 21 déc. 2005, 15:00
par jeff
pour l'interpretation c'est bon j'ai fait le traitement avant avec

Code : Tout sélectionner

cleanWhitespace(XML.documentElement);
mon probleme actuel se situe sur cette ligne
 args[i]=node.attributes[i].nodeValue;
qui cause un warning sous ff

Code : Tout sélectionner

Erreur : [JavaScript Error: "invalid array length" {file: "http://localhost/projet_ing/template/templates/js/groupe.js" line: 90}] Fichier source : http://localhost/projet_ing/template/templates/js/groupe.js Ligne : 90
par contre sous ie ca bloque a

Code : Tout sélectionner

var args=new Array();

Posté : 21 déc. 2005, 15:27
par jeff
:oops: t'avais raison pour les noeuds texte
la fonction que j'utilise enleve que les noeuds vides

Posté : 21 déc. 2005, 16:05
par jeff
tout marche ou presue :-"
suaf sous ie
alors c'est mon tableau ou non????