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

EDI, CMS, Outils, Scripts et API PHP Discussion :

simplexml_load_file — Convertit un fichier XML en objet


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Par défaut simplexml_load_file — Convertit un fichier XML en objet
    Bonjour à tous,

    J'ai besoin de votre aide s'il vous plait. Au fait, depuis plusieurs jours je cherche à convertir un lien externe (https://aviationweather.gov/adds/dat...tars.cache.xml) contenant du code xml en objet php afin de mieux le manipulé mais en vain.

    Voici le message d'erreur qui s'affiche : Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Premature end of data in tag head line 1

    Je ne sais vraiment pas comment contourner ce problème.

    Quelqu'un saurait me dire ce qui coince ou me proposer une fonction qui pourrait m'aider à contourner ce problème?

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $url = 'http://aviationweather.gov/adds/dataserver_current/current/metars.cache.xml';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $xmlresponse = curl_exec($ch);
    $xml = simplexml_load_string($xmlresponse) or die("Error: Cannot create object");
    Merci d'avance

    Olivier

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 667
    Par défaut
    l'URL redirige vers l'adresse en HTTPS.
    pour suivre les redirection avec cURL, utilisez ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

  3. #3
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Par défaut
    Citation Envoyé par mathieu Voir le message
    l'URL redirige vers l'adresse en HTTPS.
    pour suivre les redirection avec cURL, utilisez ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
    Bonjour Mathieu,
    Merci pour cette remarque qui m'avait échappé. Mais maintenant je ne comprends pas pourquoi le fonction "simplexml_load_string" ne marche pas . En fait j'ai comme l'impression qu'il ne renvoie rien.Tiens voici mon code complet. S'il te plait, j'aimerais que tu y jettes un coup d'oeil si tu as du temps :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $url = 'http://aviationweather.gov/adds/dataserver_current/current/metars.cache.xml';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
    $xmlresponse = curl_exec($ch);
    $xml = simplexml_load_string($xmlresponse) or die("Error: Cannot create object");
     
    $page_content = array();
    foreach ($xml as $event_date) $page_content[] = $event_date;
    header("content-type: application/json"); 
    $data_current = json_encode($page_content);
     
    $data_current = (array)json_decode($data_current, true);
    Merci d'avance
    Olivier

  4. #4
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    La fonction simplexml_load_string ne fonctionne pas car la chaîne renvoyée par cURL contient des caractères après la balise fermante de la racine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      </data>
    </response>
     
    1
    C'est quelque chose que tu aurais vu si tu avais activé l'affichage des erreurs.

    Tu peux les éliminer en faisant: $xmlresponse = substr($xmlresponse, 0, strrpos($xmlresponse, '>') + 1);

Discussions similaires

  1. Sérialisation et désérialisation de fichier XML en objet
    Par marooned dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 01/08/2012, 10h55
  2. Réponses: 14
    Dernier message: 24/07/2006, 12h09
  3. [SAX] Passer d'objet java en fichier XML?
    Par spoutyoyo dans le forum Format d'échange (XML, JSON...)
    Réponses: 15
    Dernier message: 05/01/2005, 08h31
  4. [C#] Créer un fichier Xml à partir d'un objet
    Par Troopers dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/09/2004, 13h23

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