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

Langage PHP Discussion :

Récupérer le contenu d'un flux XML en PHP


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 24
    Points : 12
    Points
    12
    Par défaut Récupérer le contenu d'un flux XML en PHP
    Bonjour !

    J'aimerais récupérer le contenu d'un fichier XML dont je connais l'URL en vue de le parser ultérieurement ceci n'étant pas compliqué.
    Le problème est que je ne sais pas du tout quelle fonction utiliser pour charger le fichier.

    Merci beaucoup pour votre soutient !!!

  2. #2
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Bonjour,

    Tu peux voir du côté de SimpleXml.

  3. #3
    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 777
    Points
    17 777
    Par défaut
    S'il est en PHP 4, SimpleXML n'est pas disponible. Comme extensions XML, à l'époque, il n'y a que domxml et xml.

    PS : a priori, domxml supporte la fonctionnalité allow_url_fopen, même si elle est bien plus limitée qu'en versions 5 donc si elle est active domxml_open_file suffirait. Idem pour l'autre, puisque ce n'est pas elle qui effectue directement la lecture.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 60
    Points : 75
    Points
    75
    Par défaut
    si c'est juste pour charger le contenu ni plus ni moins, il existe file() ou même file_get_contents().
    Si c'est une URL distante, allow_url_fopen doit petre à on

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    J'ai essayé avec fopen() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $XML_file_name = fopen("http://site.com/fichier.xml", "r");
    Le site marqué ici est bidon mais celui que j'utilise fonctionne bien sur un explorateur. Il faut cependant afficher le code source pour voir le contenu du .xml.

    J'ai bien fait attention a mettre le allow_url_fopen à true.

    Mais j'ai l'erreur suivante lorsque je test ma page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    failed to open stream: Bad file descriptor

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 60
    Points : 75
    Points
    75
    Par défaut
    un fopen que un site distant marche chez moi, cela viens PE de la config de ton serveur...

    t'as relancé ton serveur une fois le php.ini modifié ?

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    oui il se relance automatiquement et puis j'ai testé le rapport d'erreur n'est pas le même lorsque je met le allow url fopen à FALSE. Donc j'pense pas que le soucis vienne de la...

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Voici un bou de code que je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
      $file = fopen ("http://maps.google.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true", "r");
      if (!$file) {
        echo "<p>Impossible de lire la page.\n";
        exit;
      }
      while (!feof ($file)) {
        $line = fgets ($file, 1024);
        echo $line;
      }
      fclose($file);
    ?>
    Celui-ci vient du manuel PHP ormis la ligne ou je fais le echo $line mais bon j'ai l'erreur suivante dès que je test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Warning: fopen(http://maps.google.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true): failed to open stream: Bad file descriptor in C:\wamp\www\WS_test.php on line 3
    Peut être que j'utilise mal la fonction fopen() ou bien que l'url ne fonctionne pas mais ca affiche quelque chose sur un navigateur quand même.

  9. #9
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Et avec la fonction file_get_contents
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $filename='http://maps.google.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true';
    if(($xml=@file_get_contents($filename))===false) {
    	echo "<p>Impossible de lire la page.\n";
    	exit;
    }
    // $xml = contenu du fichier
    ?

  10. #10
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Non cela ne fonctionne toujours pas, j'ai le message Impossible de lire la page.

    Est ce que cela peut être due au fait que je passe par un proxy pour accéder à internet ?

Discussions similaires

  1. Récupérer le contenu d'un fichier xml
    Par stephcache dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 09/11/2012, 19h02
  2. Récupérer le contenu d'un champ XML
    Par ahmet57 dans le forum SQL
    Réponses: 1
    Dernier message: 12/11/2008, 16h45
  3. [SimpleXML] récupérer une vidéo dans un flux xml
    Par rezareza dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 17/11/2007, 17h52
  4. Contenu d'un flux XML
    Par sir_gcc dans le forum Services Web
    Réponses: 1
    Dernier message: 13/09/2007, 12h05
  5. [SimpleXML] Trier le contenu d'un flux XML
    Par Paulux1 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 16/07/2007, 11h45

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