Bonjour,
J'ai créé une fonction qui me permet de construire un menu à partir d'un fichier xml dont la structure est ainsi :
Code xml : 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 <?xml version="1.0" encoding="ISO-8859-15"?> <donnees> <dossier> <nom_dossier>Actualités</nom_dossier> <flux> <nom_flux>LeMonde.fr : A la Une</nom_flux> <url>http://www.lemonde.fr/rss/une.xml</url> </flux> </dossier> <dossier> <nom_dossier>Sport</nom_dossier> <flux> <nom_flux>Lepoint.fr : Sport</nom_flux> <url>http://www.lepoint.fr/content/system/rss/sports/sports_doc.xml</url> </flux> </dossier> </donnees>
et voilà ma fonction :
Code php : 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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 function CreateMenu($file) { $dom = new DOMDocument(); $dom->load($file); $afficher_menu = '<ul class="menu">'; $menuList = $dom->getElementsByTagName('dossier'); foreach ($menuList as $dossier) { $nom_dossier = $dossier->getElementsByTagName('nom_dossier'); $nom_dossier = $nom_dossier->item(0)->nodeValue; $afficher_menu = $afficher_menu."<li class=\"cat\"> <a href=\"#\" onclick=\"expand(this)\">$nom_dossier</a> <ul>"; $fluxlist = $dom->getElementsByTagName('flux'); foreach ($fluxlist as $flux) { $nom_flux = $flux->getElementsByTagName('nom_flux'); $nom_flux = $nom_flux->item(0)->nodeValue; $url = $flux->getElementsByTagName('url'); $url = $url->item(0)->nodeValue; $afficher_menu = $afficher_menu."<li class=\"souscat\"><a href=\"#\" onclick=\"recup('$url');\">$nom_flux</a></li>"; } $afficher_menu = $afficher_menu.'</ul></li>'; } $afficher_menu = $afficher_menu.'</ul>'; echo $afficher_menu; }
Le problème est le suivant : Il me trouve bien les differents dossiers, mais à chaque fois, il relit toutes les <flux> et donc intègre tous les flux dans tout les dossiers.
Ma question est donc la suivante : Comment faire une boucle qui puisse lire seulement les flux du dossier concerné ?
Partager