voila, j'ai besoin de faire un petit code qui me liste un fichier XML (nom des balises, attributs, etc), je connais pas le fichier, donc, mon code doit s'adapter.
Betement, j'ecris ca:
//ma fonction pour recuperer les infos contenues dans le fichier
function XMLRead(node) // node: le noeud a examiner
{
//affiche le nom du node
_root.affichage.text+=("Balise:"+node.nodeName+"\n");
//affiche les proprietes
for(att in node.attributes)
{
_root.affichage.text+=("Attribut :"+att+"=>"+node.attributes[att]+"\n");
// ou 'att' correspond au nom de l'attribut
}
//si l'attribut a des enfants
if(node.hasChildNodes()==true)
{
//recommence :parcour le tableau de noeud enfant
for(nod in node.childNodes)
{
if(node.childNodes[nod].nodeType==3)
{
//affiche la valeur
_root.affichage.text+=("valeur de "+node.nodeName+": "+node.childNodes[nod].nodeValue+"\n");
}
else
{
// etudie ce noeud
XMLRead(node.childNodes[nod]);
}
}
}
}
monXML=new XML();
monXML.ignoreWhite=true;
monXML.onLoad=function(success)
{
if(success==true)
{
if(monXML.status==0)
{
_root.affichage.text="Chargement reussi!!!"+this.getBytesLoaded()+"/"+this.getBytesTotal()+"\nDebut de lecture\n";
// le premier firstchild fait reference a la balise root, le second a la premiere balise 'interressante' du fichier.
XMLRead(this.firstChild.firstChild);
}
else
{
trace("Erreur document");
}
}
else
{
_root.affichage.text="Erreur lors du chargement du fichier XML";
}
}
monXML.load("XXX.xml");
Super, ca marche, sauf que ca m'ecris toutes les balises a l'envers (en ordre inverse plus exactement).
J'essaye de mettre une boucle plus 'normale' du style
for (i=0;i<node.childNodes.length;i++)
mais le compteur s'incremente de facon bizzare, entrainant au mieux un oubli de balise, au pire, un plantage complet.
Donc 2 questions: flash supporte t'il la recursivité? (sinon, je suis pas dans la m****), et sinon, qu'es-ce qui va pas dans mon for....in.... ?(j'ai essayé de passer par un tableau temporaire, de faire un reverse(), mais la, j'ai eu des resultats un peu aleatoire....). Ou peut etre le childNodes marche pas comme je pense....
Je vous remerci de me filer uncoup de main, parceque la, je vois pas......
(note: je travaille avec la version MX, pas 2004)