Niveau
..........
En rapport...

Quoi

Au hasard du web, j'ai un jour trouvé un bout de code génial qui parse un XML et le transforme en tableau. C'est beacoup plus facile a exploiter !!
Je citerais volontier l'auteur mais j'ai malheuresmeent perdu la référence, si une personne la retrouve, merci de m'avertir ⇒

Code

La methode d'utilisation est archi simple, et décrite dans le source.

actionscript
 
/*Récupération du nombre de noeud***********************************
* Renvoie le nombre de noeud
* IN : XMLobj : nombre objet xml
* OUT : maxNode : nombre de noeud (type entier)
***********************************/
function getXmlMaxNode(XMLobj) {
	MaxNode = XMLobj.firstChild.childNodes.length;
	return MaxNode;
}
//Utilisation :trace(getXmlMaxNode(XMLobjet));
//retourne 3 dans notre exemple garage.xml
 
/*Récupérer des données suivant le nom du noeud***********************************
* Récupération d'une donnée via le nom d'un noeud
* IN : XMLobj : notre objet Xml
* IN : tag : Nom du noeud (type string)
* OUT : nodes : données du noeud (type Array)
***********************************/
function getXmlValueByTag (XMLobj, tag) {
	var AY;
	Nodes=new Array();
	AY=XMLobj.toString().split("<"+tag);
	AY.shift();
	for (var i=0; i<AY.length; i++) {
		if (AY[i].charAt(0)==">" or AY[i].charAt(0)==" ") {
			Nodes.push(AY[i].substring((AY[i].indexOf(">")+1), AY[i].indexOf("</"+tag+">")));
		}
	}
	return Nodes;
}
//Utilisation:trace(getXmlValueByTag(XMLobjet, "voiture"));
//retourne les 3 descriptifs des voitures.
//Etant un tableau, si l'on veut le descriptif de la premiere voiture, on fera : trace(getXmlValueByTag(XMLobjet, "voiture")[0]);
 
 
/*Récupérer un attribut suivant son nom et le nom du noeud***********************************
* Récupération d'une donnée via le nom d'un noeud
* IN : XMLobj : notre objet Xml
* IN : tag : Nom du noeud (type string)
* IN : attr : Nom de l'attribut (type string)
* OUT : values : attribut des noeuds (type Array)
***********************************/
function getAttrValueFromXMLtag (XMLobj, tag, attr) {
	var subXML, attrValue;
	Values=new Array();
	subXML=XMLobj.toString().split("<"+tag);
	subXML.shift();
	for (var i=0; i<subXML.length; i++) {
		if (subXML[i].indexOf("</"+tag+">")>=0) {
			subXML[i]="<"+tag+subXML[i].substring(0, subXML[i].indexOf("</"+tag+">"))+"</"+tag+">";
		} else if (subXML[i].indexOf("/>")>=0) {
			subXML[i]="<"+tag+subXML[i].substring(0, subXML[i].indexOf("/>"))+"/>";
		} else { subXML[i]="hiba;"}
		childXML=new XML(subXML[i]);
		attrValue=eval("childXML.firstChild.attributes."+attr);
		if (attrValue.length>0) {Values.push(attrValue);}
	}
	return Values;
}
//Utilisation:trace(getAttrValueFromXMLtag (XMLobjet, "voiture", "marque"));
//retourne les 3 marques des voitures.
//Etant un tableau, si l'on veut la marque de la premiere voiture, on fera : trace(getAttrValueFromXMLtag (XMLobjet, "voiture", "marque")[0]);
 
 
/*Remplacer des valeur***********************************
* Renvoie la chaine avec les remplacement effectué
* IN : holder : chaine, searchfor : cherche, replacement : remplace par
* OUT : chiane remplacé
***********************************/
function searchAndReplace(holder, searchfor, replacement) {
	temparray = holder.split(searchfor);
	holder = temparray.join(replacement);
	return (holder);
}