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] Ouvertures de XML dans foreach : failed to open stream et I/O warning : failed to load external entity


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 80
    Par défaut [XML] Ouvertures de XML dans foreach : failed to open stream et I/O warning : failed to load external entity
    Bonjour,

    Je souhaite faire des ouvertures multiples de fichiers XML dans une boucle et j'obtiens des warnings de type failed to open stream et I/O warning : failed to load external entity.

    Mon fichier .htaccess possède ces 2 lignes :
    SetEnv ALLOW_URL_FOPEN ON
    SetEnv ALLOW_URL_INCLUDE ON
    J'ai un premier fichier XML qui donne une liste d'objets, j'ai ensuite pour chaque objet un fichier XML qui permet d'avoir plus d'infos sur cet objet.
    J'ai besoin de ces infos complémentaires donc je fais une boucle foreach qui parcourt le premier fichier XML et qui à chaque tour de boucle ouvre un nouvel objet.

    Le premier fichier XML s'ouvre sans souci, c'est ensuite pour les autres que j'obtiens à chaque fois 2 warnings (soit au total plus de 80 warnings dans ma page...).
    Ce qui est très bizarre est que j'arrive quand même à accéder aux informations des fichiers "enfants".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $annonces = simplexml_load_file('http://www.xxx.fr/services/objet');
     
               foreach ($annonces as $annonce):
                  //$title=$annonce->title;
     
                  //test d'affichage pour le fichier listing ==> OK
                  echo "<br />".$annonce->nid;
                  /*ouverture de la fiche objet pour récupérer d'autres informations */
                  $url_xml = 'http://www.xxx.fr/services/objet/'.$annonce->nid;
                  $annoncetraitee = simplexml_load_file($url_xml);
                  echo "<br />TEST".$annoncetraitee->path;
    Je ne comprends pas tous ces warnings ? Pourquoi sont-ils présents alors que le parseur semble récupérer les infos ?
    J'ai tenté de "vider" la variable $annoncetraitee en lui affectat un "null" mais ça ne change rien.

    Merci d'avance pour vos lumières...

    cli16

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 80
    Par défaut
    Je n'avais pas vu qu'il y avait un forum spécifique à simpleXML... quelqu'un pourrait-il supprimer ce post ?

    Merci ;-)

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 131
    Par défaut
    Salut
    peux tu essayer ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $url_xml = 'http://www.xxx.fr/services/objet/'.$annonce->nid;
    $xml = file_get_contents($url_xml);
    $annoncetraitee = simplexml_load_string($xml);

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 80
    Par défaut
    Merci pour ton retour, j'avais essayé avec file_get_contents, même problème, voici l'erreur :

    Warning: file_get_contents(http://www.xxx.fr/services/objet/299) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 406 Not Acceptable: Unknown or unsupported response format. in ... on line 266

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 80
    Par défaut
    Je n'ai pas la gestion des fichiers XML.... est-il possible qu'ils soient "ouvrables" via navigateur mais qu'on ne puisse pas les parser à cause d'un accès limité ?

  6. #6
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Si on essaie à observer plus rigoureusement du type de variable, on peut faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //$url_xml = 'http://www.xxx.fr/services/objet/'.$annonce->nid;
    $url_xml = 'http://www.xxx.fr/services/objet/'.trim((string)$annonce->nid);
    J'ai mis une trim() en plus pour être un peu plus sûr puisque la valeur d'un noeud de texte a parfois des espaces vides dépouvues de sens qui ne sont pas souhaîtable d'y en avoir, dans un url, en tout cas.

    Essayez-le pour voir ?

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

Discussions similaires

  1. Error: failed to load external entity
    Par jack-no dans le forum R
    Réponses: 0
    Dernier message: 08/10/2014, 11h32
  2. Réponses: 1
    Dernier message: 23/07/2014, 09h17
  3. [SimpleXML] Failed to load external entity
    Par naviguimmo dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 12/09/2013, 13h59
  4. Réponses: 3
    Dernier message: 10/04/2012, 15h07
  5. [SimpleXML] Erreur "failed to load external entity"
    Par seb92500 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 04/02/2007, 09h27

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