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 :

[DOM] récupérer valeurs après un xpath


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut [DOM] récupérer valeurs après un xpath
    Bonjour,
    Un petit problème :
    Voici une partie du code xml (lux.xml) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <donnees>
     <prevision>
        <prev num="1">
          <JJ>20100625</JJ>
          <PICTO>P4</PICTO>
          <T_BAS>16</T_BAS>
        </prev>
     </prevision>
    </donnees>
    Je veux récupérer les valeurs des sous-éléments de la balise <prev num="1">
    J'ai donc procédé ainsi :
    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
     
    <?php
    $doc = new DomDocument('1.0', 'UTF-8');
        $doc->load('flux.xml');
        $xpath = new DomXPath($doc);
        // Prévision 1
    	$JJ = $xpath->query('/donnees/prevision/prev[@num = "1"]/JJ');
    	$T_BAS = $xpath->query('/donnees/prevision/prev[@num = "1"]/T_BAS');
    	$PICTO = $xpath->query('/donnees/prevision/prev[@num = "1"]/PICTO');
     
            $JJ =  $JJ->item(0)->nodeValue."\n";
    	$JJ =  strftime("%A %d %B %Y",strtotime($JJ));
    	$T_BAS =  $T_BAS->item(0)->nodeValue. "\n";
     
         echo '<div class = "temp">'.$T_BAS.'°C</div>';
         echo '<div class = "jour">'.$JJ.'</div>';
         echo '<div class = "picto">'.$PICTO.'</div>';
    ?>
    N' y aurait 'il pas une méthode plus simple qui m'éviterai de faire une requête (un xpath) sur chaque élément.

    J'ai bien tenté ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        $doc = new DomDocument('1.0', 'UTF-8');
        $doc->load('flux.xml');
        $xpath = new DomXPath($doc);
        $query = $xpath->query('/donnees/prevision/prev[@num = "1"]');  
     
        echo $query->item(0)->nodeValue."\n";
    le problème est que je ne peut pas différencier mes résultas
    Merci

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 219
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 219
    Points : 8 455
    Points
    8 455
    Billets dans le blog
    17
    Par défaut
    Tu peux savoir à quelle balise tu as affaire avec DOMElement::tagName, exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $result = $xpath->query('/donnees/prevision/prev[@num="1"]/*') ;
     
    foreach ( $result as $child ) {
        echo $child->tagName, ' = ',  $child->nodeValue, '<br>' ;
    }
    ... et ainsi agir en conséquence.

Discussions similaires

  1. simple html dom : récupérer valeur attribut title
    Par totof74 dans le forum Langage
    Réponses: 5
    Dernier message: 20/12/2012, 17h10
  2. DOM: récupérer valeur d'un <td>
    Par rockt13 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/01/2010, 11h28
  3. [DOM] Récupérer valeur dans un tableau html
    Par ViRouF dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 08/10/2008, 17h48
  4. Réponses: 2
    Dernier message: 06/07/2007, 10h59
  5. Réponses: 3
    Dernier message: 16/02/2007, 11h42

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