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 avec XPATH pour une requete simple en apparence


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 51
    Par défaut SimpleXML avec XPATH pour une requete simple en apparence
    Bonjour,

    Je rencontre actuellement un problème dans l'utilisation de SimpleXML associé à XPATH.

    En gros, voila mon problème.
    J'ai un fichier XML qui contenant ces 3 produits

    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
     
    <produit>
       <data>
          <nom>
             SALADE
          </nom>
       </data>
    </produit>
     
    <produit>
       <data>
          <nom>
                <text>
                   TOMATE
                </text>
          </nom>
       </data>
    </produit>
     
    <produit>
       <data>
          <nom>
             OIGNON
          </nom>
       </data>
    </produit>
    Le nom des produits se trouve à chaque fois dans "nom", SAUF dans UN cas ou il est dans "nom/text"

    (bien entendu, mon fichier xml est un peu plus complexe que cet exemple ^^)

    Ma question est la suivante : comment puis-je faire pour récupérer SALADE, TOMATE, OIGNON en une seule requete. Il faudrait pouvoir prendre ce qui se situe dans le "nom", SAUF SI il existe un enfant "text", à ce moment la il faudrait prendre la valeur de cet enfant.

    Merci d'avance pour votre aide ! (à noter qu'il faut que j'utilises SimpleXML)

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Je suis une tanche en XSL, mais il me semble que c'est typiquement à ça que sert :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //produit/data/nom/string()
    Ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //produit/data/nom/normalize-space()
    Si on veut se débarrasser du pretty-print.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 51
    Par défaut
    ok donc en utilisant SimpleXML ca donnerait quelque chose de ce style ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    $file = simplexml_load_file(XML_URL)
     
    $file->produit->data->xpath('nom[string()]');
    Si c'est comme ca ca ne marche pas. en faisant un var_dump nom et son enfant

  4. #4
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Tu peux essayer quelle chose comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    //produit/data/nom//text()

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 51
    Par défaut
    ca avance déjà un petit peu mais j'avais omis de vous dire quelque chose qui du coup me pose des problèmes avec cette solution

    "nom" possède 2 attributs, tandis que text n'en possède aucun. Du coup quand je veux afficher /nom/string() ca me renvoie un array

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Normalement string() ignore les attributs, donc ça n'a rien à voir.

    Et il est normal que /nom/string() renvoie un tableau, puisque tu sélectionnes tous les contenus de balise <nom>, et qu'il y a plus d'une balise <nom>.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Problème avec checkbox pour une requete
    Par tyjez dans le forum Requêtes et SQL.
    Réponses: 22
    Dernier message: 22/09/2013, 20h20
  2. [XPATH] Résultat vide pour une requete xpath
    Par bitbis dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 20/06/2008, 14h41
  3. [MySQL] Cherche aide pour une requete avec jointure
    Par nasbe26 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 29/09/2007, 11h44
  4. Pb avec un edit pour une requete SQL
    Par TiEw34 dans le forum Bases de données
    Réponses: 3
    Dernier message: 31/05/2007, 00h18

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