Bonjour à tous,

Après m'être plongé dans les méandres de la récursivité, je viens chercher aide et conseil au cas où quelque chose m'échapperait et si c'est bien possible.

J'ai donc un arbre xml dont je ne connais pas la profondeur. Je cherche à le parser et afficher les identifiants de chaque nœud ainsi que l'identifiant du noeud parent.

Voici un extrait succinct de mon xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
<Category catalogs="false" id="150401" name="Livres, Musique, Film" refinements="false">
            <Category catalogs="false" id="148401" name="Film" refinements="false">
                <Category catalogs="false" id="150101" name="Cassette Vidéo/VHS" refinements="true"/>
 
                <Category catalogs="true" id="149201" name="DVD" refinements="false"/>
                <Category catalogs="false" id="149801" name="Location de DVD" refinements="false"/>
                <Category catalogs="false" id="100298223" name="Merchandising / Produits dérivés" refinements="true"/>
                <Category catalogs="false" id="149001" name="Téléchargement de vidéo" refinements="false"/>
            </Category>
            <Category catalogs="false" id="100095913" name="Musique" refinements="false">
                <Category catalogs="false" id="150701" name="CD" refinements="true"/>
                <Category catalogs="false" id="100010313" name="Téléchargement de musique" refinements="false"/>
                <Category catalogs="false" id="153801" name="Vinyles" refinements="true"/>
 
            </Category>
            <Category catalogs="false" id="100801" name="Livres et magazines" refinements="false">
                <Category catalogs="false" id="5101" name="Livres" refinements="false"/>
                <Category catalogs="false" id="104401" name="Journaux et magazines" refinements="true"/>
            </Category>
        </Category>
Voici la méthode de ma classe actuellement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
private function parseVCT($root,$lvl=0) {
 
                foreach($root as $name=>$elem) {
                        // Check if children exist
                        if(trim($elem) == "") {
                                for($i=1;$i<=$lvl;$i++) { echo "\t"; }
 
                                $children = $elem->children();
                                $attributs = $elem->attributes();
 
                                if(trim($attributs) != "") echo '['.$elem->attributes()->id.']'."\n" ;
                                 // boucle recursif  
                                $this->parseVCT($children,$lvl+1) ;                                                
                        }
                }
        }
Niveau récursivité, aucun souci, j'ai bien à l'affichage mes ids correctement du genre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
[150401]
        [148401]
                [150101]
                [149201]
                [149801]
                [100298223]
                [149001]
        [100095913]
                [150701]
                [100010313]
                [153801]
        [100801]
                [5101]
                [104401]
Je cherche donc la possiblité d'afficher quelque chose qui ressemblerait à
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
[0][150401]
        [150401][148401]
                [148401][150101]
                [148401][149201]
                [148401][149801]
                [148401][100298223]
                [148401][149001]
        [150401][100095913]
                [100095913][150701]
                [100095913] [100010313]
                [100095913] [153801]
        [150401][100801]
                [100801][5101]
                [100801][104401]
Je suis ouvert à toutes possibilités, je n'ai pas de contrainte. Je suis en PHP5.

Une idée, une piste, un conseil, un encouragement, je prend tout

Merci