lecture d'un fichier XML

Mammouth du PHP | 1311 Messages

21 déc. 2005, 13:17

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

Mammouth du PHP | 1311 Messages

21 déc. 2005, 14:37

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

Mammouth du PHP | 1311 Messages

21 déc. 2005, 14:45

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)); }

Mammouth du PHP | 19672 Messages

21 déc. 2005, 14:53

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 :?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1311 Messages

21 déc. 2005, 15:00

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();

Mammouth du PHP | 1311 Messages

21 déc. 2005, 15:27

:oops: t'avais raison pour les noeuds texte
la fonction que j'utilise enleve que les noeuds vides

Mammouth du PHP | 1311 Messages

21 déc. 2005, 16:05

tout marche ou presue :-"
suaf sous ie
alors c'est mon tableau ou non????