IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[SimpleXML] Récupérer valeur parents après XPath sur valeur enfant


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 14
    Points
    14
    Par défaut [SimpleXML] Récupérer valeur parents après XPath sur valeur enfant
    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 :
    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";
     
    }
     
     
    ?>
    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.

    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.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 424
    Points : 15 794
    Points
    15 794
    Par défaut
    facile avec XPath, pour récupérer les nœuds parents, tu rajoutes juste 2 points à la fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $rs = $xml->xpath('//Product/CategoryPath[ProductCategoryPath="Combat"]/..') ;

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par mathieu Voir le message
    facile avec XPath, pour récupérer les nœuds parents, tu rajoutes juste 2 points à la fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $rs = $xml->xpath('//Product/CategoryPath[ProductCategoryPath="Combat"]/..') ;

    Genial, en plein dans le mille !

    Merci infiniment, ça fait 3 jours que je bloquais dessus !
    Au plaisir de te renvoyer l'ascenseur dès que possible !

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Merci de ta réponse ca ma beaucoup aidé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/04/2016, 18h36
  2. [DOM] récupérer valeurs après un xpath
    Par jluc2009 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 11/07/2010, 04h01
  3. JSP : Récupérer valeur lors du clic sur un bouton
    Par ze veritable farf dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 11/04/2006, 11h16
  4. récupérer valeur sur 4 chiffres
    Par Gary dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/02/2006, 11h10
  5. récupérer valeur d'un ID après insertion
    Par rikidi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/08/2003, 22h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo