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

XSL/XSLT/XPATH XML Discussion :

[XPath][SimpleXML] récupération d'infos des parents


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Par défaut [XPath][SimpleXML] récupération d'infos des parents
    Bonjour à tous,

    Débutant depuis peu avec XPath, j'aimerai quelques conseils.
    Je travaille en PHP5 et j'utilise simpleXML et/ou DOM suivant les besoins. Je sais récupérer des éléments avec XPath, suivant un attribut par exemple, enfin des trucs simples quoi. Mais là ça se complique pour moi.

    Soit le fichier XML suivant :

    http://pastebin.ca/254106

    A partir de l'attribut 'controller' d'un élément <page>, j'aimerais récupérer les informations suivantes :

    1) toutes les valeurs des attributs 'id' des éléments <rub> parents à l'élément <page> sélectionné ;

    2) tout ce qu'il y a entre toutes les balises <informations> (valeur entre <title>, valeur de l'attribut 'tool' dans l'élément <name> et valeur entre <access>), ceci également pour tous les éléments <rub> parents à l'élément selectionné.

    Je donne un exemple : à partir de
    //rub[@id='titi']/page[@controller='tupeuxpastest.php']

    J'aimerai récupérer quelque chose comme ça :

    1) $rub[0]='forum'; $rub[1]='toto'; $rub[2]='tata'; // (ce sont les attributs 'id' des éléments <rub> parents à cet élément <page>) ;

    2) Tout ça :

    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
     
    $title[0] = 'page de test' ;
    $title[1] = 'les infos de la rubrique titi' ;
    $title[2] = 'les infos de la rubrique tata' ;
    $title[3] = 'les infos de la rubrique toto' ;
    $title[4] = 'Mon forum (mais oui c'est ça)' ;
     
    $tool[0] = 'meteo';
    $tool[1] = 'titiManager';
    $tool[2] = 'titiParser';
    $tool[3] = 'totoManager';
    $tool[4] = 'totoParser';
    $tool[5] = 'tataManager';
    $tool[6] = 'tataParser';
    $tool[7] = 'lastThread';
     
    $access[0] = '1';
    $access[1] = '0' ;
    $access[2] = '3' ;
    $access[3] = '0' ;
    $access[4] = '0' ;
    Voilà, je ne sais pas si j'ai été bien clair. C'est clair que je n'ai pas encore le niveau pour faire ça mais j'aimerai y parvenir. Donc, si vous pouviez m'éclairer, me donner des pistes, par quoi commencer... etc, je vous en serais bien reconnaissant !

    Merci d'avance !

  2. #2
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Bonjour,

    Citation Envoyé par littlewings
    1) toutes les valeurs des attributs 'id' des éléments <rub> parents à l'élément <page> sélectionné ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //rub[@id='titi']/page[@controller='tupeuxpastest.php']/ancestor::rub/@id
    Citation Envoyé par littlewings
    2) tout ce qu'il y a entre toutes les balises <informations> (valeur entre <title>, valeur de l'attribut 'tool' dans l'élément <name> et valeur entre <access>), ceci également pour tous les éléments <rub> parents à l'élément selectionné.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //rub[@id='titi']/page[@controller='tupeuxpastest.php']/ancestor::rub/informations
    Cette requête XPath va te renvoyer le tableau de tous les <informations> utiles, il n'y a plus ensuite à écrire un peu de PHP pour accéder aux éléments de chacun.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Par défaut
    GrandFather> J'en demandais pas autant ! Merci 1000 fois !
    Par contre, est-il possible de déduire l'id du <rub> parent à la page interrogée ? Parce que là je dois forcément connaitre l'id du <rub> parent, alors qu'à la base, la seule info dont je dispose, c'est @controlleur='tupeuxpastest.php'...

    [EDIT]Non non, en fait c'est bon avec ça ![/EDIT]

    Dans tous les cas merci beaucoup beaucoup pour ce coup de patte, c'est super sympa !

  4. #4
    Invité
    Invité(e)
    Par défaut
    J'ai un peu le même problème, mais en plus simple.
    J'ai beau lire les tutos et toutes les docs possibles, je cherche depuis 15h cette aprèm, sans trouver ( je suis un nOOb en Xpath ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <Modalites>
     <MODALITE>1904084</MODALITE>
     <MODALITE_NOM>Mini chbr triple</MODALITE_NOM>
     <VALEUR>90</VALEUR>
     <MODALITE_ORDRE>11</MODALITE_ORDRE>
    </Modalites>
    <Modalites>
     <MODALITE>1904096</MODALITE>
     <MODALITE_NOM>Mini petit déjeuner</MODALITE_NOM>
     <VALEUR>10</VALEUR>
     <MODALITE_ORDRE>400</MODALITE_ORDRE>
    </Modalites>
    (...)
    A un moment d'une boucle, je me je trouve dans /modalites/MODALITE[1904096].
    Comment récuperer la valeur de MODALITE_NOM du noeud précédent ( /modalites/MODALITE[1904084]/MODALITE_NOM dans ce cas là ) ???

  5. #5
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Citation Envoyé par doctorrock
    Comment récuperer la valeur de MODALITE_NOM du noeud précédent ( /modalites/MODALITE[1904084]/MODALITE_NOM dans ce cas là ) ???
    Relis tes tutos et intéresse-toi à l'axe XPath preceding-sibling...
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  6. #6
    Invité
    Invité(e)
    Par défaut
    Thx, en effet ...

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

Discussions similaires

  1. [SimpleXML] Est-il possible d'utiliser des expressions XPATH 2.0 avec simplexml ?
    Par ANISSS dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 09/11/2006, 09h14
  2. [XPath][SimpleXML] probleme avec simplexml et xpath
    Par ANISSS dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 30/10/2006, 16h54
  3. Réponses: 2
    Dernier message: 05/10/2004, 22h43

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