Aide - Recherche - Membres - Calendrier
Version complète : Parcours de tous les noeud d'un XML
Centre de Formation Flash - Forums Adobe Flash > Rich media et intégration > Flex
matthieuS
Bonjour,

J'ai un "tree" qui contient les valeurs d'une variable XML.
Cette variable est de type XML, elle contient les valeurs suivantes :

CODE
<node label="racine" isbranch = "true">
    <node label="premLevelQuizz" isBranch = "true"/>
             <node label="deuxLevelContenu1" />
             <node label="deuxLevelContenu1" />
    <node label="premLevelGroupe" isBranch = "true">
        <node label="deuxLevelContenu1" isBranch = "true"/>
                      <node label="deuxLevelContenu1" />
                      <node label="deuxLevelContenu1" />
        <node label="deuxLevelContenu2" isBranch = "true"/>
    </node>
</node>


Comme on peut le voir certain node sont des branches qui contiennent ou pas des node
(les valeurs des labels sont à titre d'exemple)

Je souhaiterais pouvoir lister l'ensemble des noeuds un par un pour les stocker dans une liste, un array ou autre format peu importe. L'essentiel est de pouvoir parcourir la variable XML de haut en bas en passant par tout les enfants.

Merci.
matthieuS
Un tuyau s'il vous plait

je vous remercie par avance
matthieuS
Bonjour,

J'ai un "tree" qui contient les valeurs d'une variable XML.
Cette variable est de type XML, elle contient les valeurs suivantes :


CODE
<node label="racine" isbranch = "true">
    <node label="premLevelQuizz" isBranch = "true"/>
             <node label="deuxLevelContenu1" />
             <node label="deuxLevelContenu1" />
    <node label="premLevelGroupe" isBranch = "true">
        <node label="deuxLevelContenu1" isBranch = "true"/>
                      <node label="deuxLevelContenu1" />
                      <node label="deuxLevelContenu1" />
        <node label="deuxLevelContenu2" isBranch = "true"/>
    </node>
</node>



Comme on peut le voir certain node sont des branches qui contiennent ou pas des nodes
(les valeurs des labels sont à titre d'exemple)

Je souhaiterais pouvoir lister l'ensemble des noeuds un par un pour les stocker dans une liste, un array ou autre format peu importe. L'essentiel est de pouvoir parcourir la variable XML de haut en bas en passant par tout les enfants.

Merci de m'indiquer un fonction qui permettrait de faire cela ou un tuyau permettant de me mettre sur la voie.
matthieuS
CITATION(matthieuS @ Jul 6 2007, 08:06 AM) *
Un tuyau s'il vous plait

je vous remercie par avance



Je ne sais pas si je suis sur le bon forum pour cette question.

Veuillez m'en excuser
Tonic
Salut,

à la fin de ce topic, tu trouveras une fonction qui permet de parcourir récursivement le contenu d'un arbre.

http://flash.mediabox.fr/index.php?showtopic=63057&hl=

Le princpe est exactement le même, puisque l'arbre contient un xml en guise de dataProvider.

Il te suffit donc, au lieu de récupérer le dataProvider, de passer directement en argument ton xml.

Nb : j'ai fusionné tes 2 sujets.
matthieuS
CITATION(Tonic @ Jul 6 2007, 08:56 AM) *
Salut,

à la fin de ce topic, tu trouveras une fonction qui permet de parcourir récursivement le contenu d'un arbre.

http://flash.mediabox.fr/index.php?showtopic=63057&hl=

Le princpe est exactement le même, puisque l'arbre contient un xml en guise de dataProvider.

Il te suffit donc, au lieu de récupérer le dataProvider, de passer directement en argument ton xml.



Merci pour la réponse rapide
Justement j'ai vu ce topic mais la personne dit qu'il ne fonctionne pas avec AS3
et justement moi je fonctionne AS3

Donc en fait, j'ai le même problème que lui je pense.
Tonic
CITATION(matthieuS @ Jul 6 2007, 08:59 AM) *
Merci pour la réponse rapide
Justement j'ai vu ce topic mais la personne dit qu'il ne fonctionne pas avec AS3
et justement moi je fonctionne AS3


la dite "personne" c'est moi icon_smile.gif

Si tu vas au bout du sujet, il y a la version AS3 qui tourne parfaitement icon_wink.gif
matthieuS
CITATION(Tonic @ Jul 6 2007, 09:02 AM) *
la dite "personne" c'est moi icon_smile.gif

Si tu vas au bout du sujet, il y a la version AS3 qui tourne parfaitement icon_wink.gif




Exactement, je m'en excuse, je suis allé trop bas dans le topic.

Par contre, j'arrive pas à faire tourné car je bloque à la boucle

for each(var result:XML in node..*.(@label== search))

Il ne veux pas rentrée dedans, j'ai changé item par label.
Et pour parcourir tout, je cherche un mot qui n'existe pas, comme cela je passerai partout.
Mais le programme ne rentre pas dans la boucle for (la premiere).

Merci de me dire si je fais une erreur

CODE
public function doSearch(node:XML, search:String):void
        {                    
                var position : Number;
                var findAttribute : Boolean = false;
                for each(var result:XML in node..*.(@label == search))
                {                
                    var liste:Array = [result];        
                    var temp:XML = result;                
                    while((temp = temp.parent()) != null)
                    {            
                        liste.unshift(temp);        
                    }         
                    for each(var item:XML in liste)
                    {            
                        Alert.show("res : " + item.toXMLString());
                        //tree.expandItem(item, true);                    
                    }
                    //tree.selectedItem=liste[liste.length-1];
                    //tree.verticalScrollPosition=listTagTree.selectedIndex;
                }                            
        }
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.