Bonjour à tous,
Je suis désolé pour le titre du topic qui n'a pas l'air très clair, mais bon je m'explique :
Mon fichier xml est une grosse base de donnée avec différents jeux videos appartenant à des genres divers. J'arrive à parser l'intégralité de la base sur une seule page (tout en vrac), mais j'aimerais pouvoir filtrer ma base de donnée afin de ne parser par exemple que la catégorie : action, gestion, famille ...
Tout ceci sachant que je n'ai pas la possibilité de modifier le fichier xml.
J'ai donc essayé mille et un moyen avec le xpath, mais je n'y arrive pas, je débute en xml.
Mon cas ressemble beaucoup à celui-ci http://www.developpez.net/forums/d60...ple-xml-xpath/ mais est quand même plus complexe.
Mon flux 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
22
23
24
25
26
27
28
29
30
31
32
33 <Products ProgramID="###" ShopID="###"> <Product ArticleNumber="13872999"> <CategoryPath> <ProductCategoryID>31526548</ProductCategoryID> <ProductCategoryPath>Combat</ProductCategoryPath> </CategoryPath> <Price> <DisplayPrice>180 EUR</DisplayPrice> </Price> <Deeplinks> <Product>http://www.monsiteinternet.html</Product> </Deeplinks> <Details> <Title>Tekken 6</Title> <DescriptionShort>Ce jeu de combat va blabla</DescriptionShort> </Details> <Date/> <Images> <Img Name="Cbt"> <URL>http://monsite.com/cover.jpg</URL> </Img> </Images> <Properties/> </Product>
Et mon code actuel :Je bloque complètement car après le filtre, je n'arrive qu'a recuperer les données enfants de CategoryPath, et pas les parents.
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 <?php $xml = simplexml_load_file('jeuxvideo.xml') ; $rs = $xml->xpath('//Product/CategoryPath[ProductCategoryPath="Gestion"]') ; foreach ($rs as $Product) { print "Categorie : {$Product->ProductCategoryID} <br />\n"; } ?>
Hors ce que je voudrais, c'est la chose suivante :
Si le noeud Product a pour valeur enfant dans (=>CategoryPath=>ProductCategoryPath) la valeur Combat, alors afficher toutes les caractéristiques de ce produit.
J'espère avoir été clair, en attendant vos réponse, merci beaucoup d'avance.
Partager