Pb avec XML en AS3 [Résolu]

Pb avec XML en AS3 [Résolu] - Flash/ActionScript - Programmation

Marsh Posté le 14-12-2009 à 10:50:49    

Bonjour, j'ai regardé la doc et je ne vois pas pourquoi je n'arrive pas à lire mon objet xml. Il n'y a pas d'erreur de syntaxe et pourtant rien ne s'affiche comme il faudrait.
 

Code :
  1. var str:String="<tree><client>nom1</client><client>nom2</client><client>nom3</client></tree>";
  2. var xml:XML=new XML(str);
  3. xml.ignoreWhite=true;
  4. trace(xml); //Affiche tout mais aussi <ignoreWhite>true</ignoreWhite> !!
  5. trace(xml.firstChild); //Devrait tout afficher mais n'affiche rien
  6. trace(xml.firstChild.childNodes[0]); //Devrait afficher <client>nom1</client> mais affiche undefined


ps: J'ai copié le code en AS2 et ça marche


Message édité par watoo watoo le 15-12-2009 à 09:00:47
Reply

Marsh Posté le 14-12-2009 à 10:50:49   

Reply

Marsh Posté le 14-12-2009 à 12:04:56    

Déja, le noeud "tree" étant la racine, il ne compte pas dans la navigation au sein du XML...
Le contenu de xml est donc le contenu de <tree> ici... C'est pas tout à fait vrai mais bon...
 
Sinon, je ne me suis pas trop penché sur le pourquoi, mais je te suggère de récupérer tes donnée ainsi :

Code :
  1. trace(xml.client); // Affiche tous les noeuds <client>
  2. trace(xml.client[0]); // affiche "nom1"


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 14-12-2009 à 22:12:36    

Ok, merci, je pense que firstChild, childNodes, etc.. n'existent plus en AS3 bien que la compilateur n'indique pas d'erreur. La syntaxe est tout autre et ça doit expliquer ces résultat bizarre. Bon, je vais m'y mettre sans plus attendre :)


Message édité par watoo watoo le 14-12-2009 à 22:13:02
Reply

Marsh Posté le 14-12-2009 à 22:45:19    

que trace(xml.firstChild.childNodes[0]); retourne undefined c'est normal, vu que comme je l'ai dis, xml correspond à <tree>, et donc, il ne trouve pas d'enfant à <client>...
Pour l'autre, il retourne rien dans la fenetre, mais ça ne veux pas dire qu'il y a rien... Il s'agit la d'un retour de type XMLlist (si je ne m'abuse) qui nécessite peut etre un traitement avant d'etre retourné sous forme de texte...
Je vais me pencher sur la question tiens :)


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 14-12-2009 à 23:04:29    

Ok pour <tree>, il correspond bien à la racine mais sinon j'ai trouvé, mais c'était bien planqué dans la doc ! Pour que toutes les fonctions AS2 fonctionnent à nouveau en AS3 (firstchild, childNodes, nodeName, length, etc...) ll faut convertir le document :
 

Code :
  1. var xml2:XMLDocument=new XMLDocument();
  2. xml2.ignoreWhite=true;
  3. xml2.parseXML(xml);


 
Pfffff... le nb d'heures de prise de tête pour ces 3 lignes Grrrr


Message édité par watoo watoo le 14-12-2009 à 23:05:28
Reply

Marsh Posté le 15-12-2009 à 08:02:50    

Ok, c'est bon à savoir !
C'est vrai que dés que je me suis mis à AS3, je n'ai pas cherché à apprivoiser autre-chose que le XML()...
C'est tellement bon de parcourir le XML par tag !


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 15-12-2009 à 08:57:12    

oui c'est pratique mais mon programme doit déterminer les noms et les types de noeuds et le nombre de leur enfants... L'autre méthode m'était plus familière. Sinon, lorsqu'on connait déjà la structure du document XML, ce système des tags est plus agréable.


Message édité par watoo watoo le 15-12-2009 à 08:57:34
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed