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

XML/XSL et SOAP Discussion :

SimpleXml et choisir un élement selon un attribut


Sujet :

XML/XSL et SOAP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut SimpleXml et choisir un élement selon un attribut
    Bonjour à tous,

    Alors voici le petit problème qui se pose à moi.

    J'ai un programme qui doit effectué la récupération de 150 valeurs d'éléments multiplié par 20 000 (nombre de réponse XML reçues).
    J'ai donc une contrainte temps non négligeable.

    Voici un petit exemple de xml pour illustrer mon problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <personne sexe="homme">
       <nom>
          toto
       </nom>
    </personne>
    <personne sexe="femme">
       <nom>
          tata
       </nom>
    </personne>
    J'aimerais, selon l'attribut de l'élément parent, récupérer la valeur de l'élément fils.

    Pour un gain de temps je récupère lorsqu'il n'y a pas d'attribut de cette manière (soit $xml ma réponse xml):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nom = $xml->personne->nom[0]
    Peut-on de cette même manière, récupérer ce qui m'intérèsse selon un attribut?

    Merci d'avance

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Il n'y a qu'une option pour cela : XPath (avec la méthode éponyme).

    Exemple :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $sxml = simplexml_load_file('xxx.xml');
    foreach ($sxml->xpath('...../personne[@sexe = "homme"]') as $h) {
        echo $h->nom;
    }

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    J'allais poster celà effectivement car j'ai trouvé il y a 10min ^^

    Merci

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par julp Voir le message
    Il n'y a qu'une option pour cela : XPath (avec la méthode éponyme).

    Exemple :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $sxml = simplexml_load_file('xxx.xml');
    foreach ($sxml->xpath('...../personne[@sexe = "homme"]') as $h) {
        echo $h->nom;
    }
    Bonjour,

    Je suis confronté à un autre problème maintenant :

    Comment faire en fonction de plusieurs attributs?

    J'ai essayé $sxml->xpath('...../personne[@sexe = "homme" @age="30"]/nom') pour avoir le nom en fonction de deux attributs, mais ça ne fonctionne pas.

    Est-ce possible de faire ce genre de "demande" ou est-ce impossible?

    Merci

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Ça coûte quand même pas cher de regarder un tutorial xPath -_-°. Voilà mon premier exemple trouvé.

    Ce que tu cherches, c'est le mot-clé and. À noter que le mot-clé or existe aussi.


    Edit: Tiens non, finalement le lien que je donne prétend être un tutoriel mais n'est jamais qu'une liste d'opérateurs qui n'explique pas comment s'en servir.
    Et je constate que je ne trouve pas facilement de tutoriel simple qui aborde la question.
    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sxml->xpath('...../personne[@sexe = "homme" and @age="30"]/nom')
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci.

    Effectivement, pas énormément de tutoriel sur cette méthode éponyme. J'ai pourtant cherché sur le net mais peu, voir pas de sujet existe avec ce type de méthode.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Il y a ce tutoriel qui est très bien pour XPATH :
    http://www.dil.univ-mrs.fr/~massat/ens/xml/4-xpath.html

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

Discussions similaires

  1. [DOM XML]Récupérer certaines entrées selon un attribut
    Par Med_ivh dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 19/06/2007, 11h50
  2. comment trier les instances d'une classe selon un attribut choisi
    Par rddev dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 29/05/2007, 00h01
  3. [XSLT] Regroupement et tri d'un XML selon un attribut
    Par tatemilio2 dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 25/01/2007, 11h18
  4. [XSLT]Problèmes pour regrouper selon l'attribut
    Par gharl dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 21/08/2006, 21h39
  5. Filtre d'affichage de balise selon leur attributs
    Par Norely dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 03/04/2003, 14h33

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