Bonjour,
Depuis une url du type http://127.0.0.1/projet/?chemin=inde...est/page_test2, je cherche à parcourir un arbre dom.
L'arbre représente l'arborescence du site :
que je parcours avec le code php suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 arbre.xml <?xml version="1.0" encoding="UTF-8"?> <arbre> <index type="test1"> <page_test type="test2"> <page_test2 type="test3"></page_test2> </page_test> <page_test2 type="erreur"></page_test2> </index> </arbre>
avec ça, je récupère le type de page selon la variable chemin rentrée dans l'url. Seulement, quelques détails me chiffonnent :
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
22
23
24
25 index.php <?php // url - chemin de la page $chemin = (isset($_GET['chemin']))? $_GET['chemin'] : 'index'; // décomposition du chemin $chemin = explode('/', $chemin); // chargement de l'arbre xml $arbre = new DomDocument(); $arbre->load('fichier/config/arbre.xml'); // recherche de la page dans l'arbre xml foreach($chemin as $page){ $arbre->getElementsByTagName($page)->item(0); } // type de page $type = $arbre->getElementsByTagName($page)->item(0)->getAttribute('type'); echo $type; ?> <h2> exemple de lien :</h2> <a href="?chemin=index/page_test/page_test2">lien</a>
- je ne sais pas comment tester si un tag existe bel et bien. Il faudrait que je puisse générer une page d'erreur 404 si la page n'existe pas. A priori, j'aurai tendance à penser que je ne construis pas correctement mon arbre vu qu'une telle méthode ne semble pas exister (on peut tester si un attribut existe mais pas un tag).
- la méthode getElementsByTagName parcours l'ensemble du document pour lister les tags correspondants. Mais, dans mon cas, je recherche toujours le premier tag qui se trouve à chaque fois parmi les premiers enfants du noeud sur lequel je suis. Autrement dit, je n'ai pas d'intérêt à parcourir l'arbre entier même si ici, vu la taille de l'arbre, ce n'est pas gênant, j'aimerai éviter d'avoir à chercher dans l'arbre entier dans l'hypothèse d'un site avec beaucoup de pages.
Merci pour votre aide.
Partager