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 :

[XML] Récupérer les données d'un fichier XML sur URL avec php


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 24
    Points : 23
    Points
    23
    Par défaut [XML] Récupérer les données d'un fichier XML sur URL avec php
    Bonjour,

    J'aimerai pouvoir récupérer une ligne précise du fichier XML retourné par l'adresse suivante : http://maps.googleapis.com/maps/api/...E&sensor=false

    C'est la ligne distance/text qui m'interesse véritablement, et je ne parviens pas a récupérer cette ligne.

    J'ai trouvé un petit bout de code sensé permettre d'ouvrir un XML a partir d'une URL et le traiter ligne par ligne, mais il ne fonctionne pas.


    Code php : 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
    <?php
     
    if (!$fp = fopen("http://maps.googleapis.com/maps/api/distancematrix/xml?origins=26780ALLAN&destinations=LA%20BEGUDE%20DE%20MASINQUE&sensor=false","r")) {
    	echo "Echec de l'ouverture du fichier";
     
    	exit;
     
    }
     
    else {
    	while(!feof($fp)) {
    	// On récupère une ligne
    	$Ligne = fgets($fp,255);
     
    	// On affiche la ligne
    	echo $Ligne;
     
    	// On stocke l'ensemble des lignes dans une variable
    	$Fichier .= $Ligne;
     
            }
            fclose($fp); // On ferme le fichier
    }
    ?>

    Voila, si vous avez une solution qui pourrait m'aider a sortir de cette impasse, je vous en serais fortement reconnaissant !

    Merci d'avance a tous

    Edit : Ma page PHP me renvoi "OK Allan, France NOT_FOUND" soit la première ligne du fichier XML

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2010
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 144
    Points : 241
    Points
    241
    Par défaut
    Il faut utiliser un parseur XML au lieu de parcourir toutes les lignes du fichier.
    Il en existe plusieurs, un tuto ici au hasard : http://eusebius.developpez.com/php5dom/

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 24
    Points : 23
    Points
    23
    Par défaut
    J'ai du mal a comprendre le fonctionnement...

    Voila mon code php :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $dom = new DOMDocument();
    $dom->load('http://maps.googleapis.com/maps/api/distancematrix/xml?origins=26780ALLAN&destinations=LA%20BEGUDE%20DE%20MASINQUE&sensor=false');
    $dom = $dom->documentElement;
    $elementDistance = $dom->getElementsByTagName('distance')->item(0);
    $valeurKm = $elementDistance->getElementByTagName('text');
       	echo $valeurkm->firstChild->nodeValue . "<br />";

    pour récupérer la donné text de la balise distance du fichier XML :

    Code xml : 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
    <?xml version="1.0" encoding="UTF-8"?>
    <DistanceMatrixResponse>
     <status>OK</status>
     <origin_address>Allan, France</origin_address>
     <destination_address>La Bégude-de-Mazenc, France</destination_address>
     <row>
      <element>
       <status>OK</status>
       <duration>
        <value>1382</value>
        <text>23 minutes</text>
       </duration>
       <distance>
        <value>16225</value>
        <text>16,2 km</text>
       </distance>
      </element>
     </row>
    </DistanceMatrixResponse>

    Mais a chaque fois j'ai une erreur du type :
    Fatal error: Call to a member function getElementByTagName() on a non-object

  4. #4
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Attention que getElementsByTagName() soit avec un 's' toujours. Et puis, il faut contrôller le retour DOMNodeList qu'il soit quelque chose au lieu de rien.

    On peut donc le faire comme ça pour une démonstration?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $elemlist=$dom->getElementsByTagName('distance');
    if ($elemlist->length!=0) {
        $elementDistance = $elemlist->item(0);
        $valeurKmlist=$elementDistance->getElementsByTagName('text');
        if ($valeurKmlist->length!=0) {
            $valeurKm=$valeurKmlist->item(0);
            echo $valeurKm->firstChild->nodeValue . "<br />";
        }
    }

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 24
    Points : 23
    Points
    23
    Par défaut
    Malheureusement, ça ne fonctionne toujours pas...

    http://www.showbook.fr/exportpdf.php

    Je ne comprends pas du tout la logique de traitement de ce fichier XML...

  6. #6
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Qu'il est important qu'on debug le vrai problème. Si ce morceau du code ne marche pas, c'est bien possible qu'il s'agit d'autre chose. Alors, comment être sûr de ça? Mettez le xml comme vouz avez montré dans un fichier local (dit xyz.xml par exemple). Et replacez la ligne .load() pour charger le fichier local au lieu de maps.googleapis.com etc... Comme ça vous pouvez vous assurer qu'il fonctionne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //$dom->load('http://maps.googleapis.com/etc');    //remplacée
    $dom->load('xyz.xml');
    Il est possible que le xml servi n'en est pas ce que vous attendez. C'est une service pour ceux qui aient suscrits? etc, sinon, il n'y a pas les données anticipées dans la retourne (comme j'ai bien essayé, d'ailleurs).

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 24
    Points : 23
    Points
    23
    Par défaut
    Apparemment le problème venait bien du XML généré. Une des données fournis dans l'URL n'était pas bonne et ne permettais pas de trouver le point de destination.

    J'ai donc pu corriger et le code que tu m'as fournis juste au dessus tsuji fonctionne parfaitement.

    Merci mille fois pour votre aide !

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

Discussions similaires

  1. Récupérer les données d'un fichier XML
    Par Epyon9 dans le forum Général Python
    Réponses: 6
    Dernier message: 24/06/2019, 16h36
  2. Récupérer les données d'un fichier XML
    Par anizlewan dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 26/07/2012, 18h33
  3. Réponses: 3
    Dernier message: 14/03/2007, 15h30
  4. Récupérer les données d'un fichier image
    Par Jim_Nastiq dans le forum Bibliothèques
    Réponses: 12
    Dernier message: 24/01/2007, 14h22
  5. [](VB) Récupérer les données dans un fichier .xml
    Par Furius dans le forum VBScript
    Réponses: 4
    Dernier message: 02/10/2005, 20h39

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