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 :

[SimpleXML] simplexml_load_string() erreur


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 22
    Points : 8
    Points
    8
    Par défaut [SimpleXML] simplexml_load_string() erreur
    salut à tous,

    je suis incompétent en php, surtout en php5, j'ai utilisé des fichiers en open source et une fois installés sur mon espace perso free voilà le type de l'erreur :

    Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1041: parser error : ParsePI: PI xml-stylesheet never end ... in /mnt/147/sda/5/7/guilde.mysticals/armory/_armory.php5 on line 93

    Warning: simplexml_load_string() [function.simplexml-load-string]: in /mnt/147/sda/5/7/guilde.mysticals/armory/_armory.php5 on line 93

    Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in /mnt/147/sda/5/7/guilde.mysticals/armory/_armory.php5 on line 93

    Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1041: parser error : Start tag expected, '<' not found in /mnt/147/sda/5/7/guilde.mysticals/armory/_armory.php5 on line 93

    Warning: simplexml_load_string() [function.simplexml-load-string]: in /mnt/147/sda/5/7/guilde.mysticals/armory/_armory.php5 on line 93

    Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in /mnt/147/sda/5/7/guilde.mysticals/armory/_armory.php5 on line 93

    Fatal error: Call to a member function xpath() on a non-object in /mnt/147/sda/5/7/guilde.mysticals/armory/create_sig.php5 on line 85

    je vous copie/colle la fonction :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    function getArmoryDataXML($url) {
    	global $xmlDataCache;
    	if(!$xmlDataCache[$url]) {
    		$data = getCachedXML($url);
    		if(!$data) {
    			$f = "";
    			if(USE_CURL) {
    				$ch = curl_init();
    				$timeout = 30; // set to zero for no timeout
    				$useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";
    				curl_setopt ($ch, CURLOPT_URL, $url);
    				curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    				curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    				curl_setopt ($ch, CURLOPT_USERAGENT, $useragent);
    				$f = curl_exec($ch);
    				curl_close($ch);			
    			} else {
    				$f = file_get_contents($url);
    			}
    			$xml = simplexml_load_string($f);
    			if($xml)
    				setCachedXML($url, $f);
    		} else {
    			$xml = @simplexml_load_string($data);
    			if(!$xml) {
    				$f = file_get_contents($url);
    				setCachedXML($url, $f);
    				$xml = simplexml_load_string($f);
    			}
    		}
    		$xmlDataCache[$url] = $xml;		
    	}
    	return $xmlDataCache[$url];
    }
    ça me dépasse complètement, c'est du chinois pour moi, auriez vous une idée de l'origine du mal svp ?

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 406
    Points : 15 771
    Points
    15 771
    Par défaut
    le problème a l'air d'être dans le contenu XML
    regarde ce qu'il y a dans la variable $f ou bien donne nous l'URL que tu essaie de lire

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    petit historique :
    le but de ces fichiers php est de récupérer des infos sur les pages de l'armurerie de World of Warcraft, par contre tout est en anglais donc je souhaite installer tout ceci sur mes pages persos et que cela fonctionne pour qu'enfin je puisse procéder à la traduction.

    j'ai regardé dans le code et ai trouvé que cela allait chercher une url dans un fichier ini :
    EU_URL=http://armory.wow-europe.com

    c'est lors du passage sur la page create_sig.php5 que cela affiche les erreurs ci-dessus.
    voici le debut de ce fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    include("_armory.php5");
    $options = parseIni("sig_config.ini", true);
    je me permets de vous joindre dans armory.rar les fichiers _armory.php5, create_sig.php5 et sig_config.ini

    mais ne vous cassez pas la tête dessus, ce n'est pas urgent
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 406
    Points : 15 771
    Points
    15 771
    Par défaut
    je n'ai pas trop envie d'installer tous ces fichiers sur mon ordinateur

    dans la fonction "getArmoryDataXML" rajoute un "echo $url;" et donne nous l'adresse qui pose problème

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    voilà ce que ça me donne comme url :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://armory.wow-europe.com/character-sheet.xml?r=lifecare&n=chants+eternels

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    hummm en fait la bonne page devrait être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://armory.wow-europe.com/character-sheet.xml?r=Chants+%C3%A9ternels&n=Lifecare
    je viens d'inverser les champs pour que cela corresponde exactement à la meme url qui marche sur wow europe, memes erreurs

  7. #7
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 406
    Points : 15 771
    Points
    15 771
    Par défaut
    j'ai trouvé le problème mais tu n'es pas arrivé au bout de tes peines
    Ce qu'il se passe c'est que le serveur armory.wow-europe.com adapte ça réponse en fonction du navigateur. Si c'est Firefox, il envoie les données XML et ensuite Firefox fais la transformation XSL. Mais si c'est un autre navigateur, la transformation est faite sur le serveur et ensuite le résultat est envoyé sous forme de code HTML

    Là dans ton code PHP, il est très probable que l'extension CURL n'est pas installé et donc le script n'arrive pas à se faire passer pour Firefox et donc le script reçoit le résultat sous forme de code HTML et donc la fonction "simplexml_load_string" n'arrive pas à l'analyser

    Si tu tiens vraiment faire fonctionner tout ça, il faudra que tu modifies la fonction "getArmoryDataXML" en remplaçant l'appel à "file_get_contents" par l'appel direct d'une requête HTTP envoyée avec la fonction http://php.net/fsockopen

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    j'ai fait quelques tests.

    j'ai crée un fichier simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?
     
    $url = "http://armory.wow-europe.com/character-sheet.xml?r=Chants+%C3%A9ternels&n=Lifecare";
    $html = file_get_contents($url);
     
    $xml = simplexml_load_string($html);
     
    echo "xml : ".$xml;
    ?>
    il y a tout de suite des erreurs

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    oki merci du tyau ^^

    je vais voir ce que je peux faire

  10. #10
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    oui mais alors ça devrait marcher sous FF non ?
    or ce n'est pas le cas ici.
    ou alors je n'ai pas compris ton explication

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    pour CURL j'ai trouvé cette ligne en tout début de fichier _armory.php5:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define("USE_CURL", false);

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    j'ai mis true et ya plus d'erreur ^^

  13. #13
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 406
    Points : 15 771
    Points
    15 771
    Par défaut
    Citation Envoyé par CyberZ
    oui mais alors ça devrait marcher sous FF non ?
    or ce n'est pas le cas ici.
    ou alors je n'ai pas compris ton explication
    oui quand Firefox appelle la page directement, le serveur renvoie du XML (regarde la source de la page)
    mais quand on demande la page dans PHP, le serveur renvoie de l'HTML


    Citation Envoyé par geraldh713
    pour CURL j'ai trouvé cette ligne en tout début de fichier _armory.php5:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define("USE_CURL", false);
    forcement, ça ne peut pas fonctionner comme ça

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    mais mdr ^^

    maintenant je dois voir pourquoi ça ne créé pas les images ^^

    en tout plus d'affichage d'erreur, donc je mets resolu.

    merci bien

  15. #15
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Points : 281
    Points
    281
    Par défaut
    Bonjour,

    Je remonte ce sujet car ma question est en rapport : je cherche également à récupérer un fichier xml depuis l'armurerie de wow mais je reçois les informations en anglais (en_us), bien qu'indiquant un navigateur en français avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";
    curl_setopt ($ch, CURLOPT_USERAGENT, $useragent);
    J'ai également testé "fr", "fr-fr"... Mais rien n'y fait, c'est toujours de l'anglais.

    Quelqu'un aurait une solution ?

  16. #16
    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
    Ne serait-ce pas plutôt sur l'entête HTTP_ACCEPT_LANGUAGE qu'il faut jouer ? A renseigner par l'intermédiaire de l'option CURLOPT_HTTPHEADER (valeurs sous la forme d'un tableau numériquement indexé).

  17. #17
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Points : 281
    Points
    281
    Par défaut
    Je viens de tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_setopt ($ch, CURLOPT_HTTPHEADER, array('HTTP_ACCEPT_LANGUAGE' => "fr"));
    mais ça ne fonctionne pas, c'est la bonne syntaxe ?

  18. #18
    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
    Un tableau numériquement indexé implique une forme comme celle ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_setopt ($ch, CURLOPT_HTTPHEADER, array('ACCEPT_LANGUAGE: fr'));
    Si elle n'est pas respectée, je doute que les entêtes soient ensuite correctes (du point de vue du protocole HTTP).

  19. #19
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Points : 281
    Points
    281
    Par défaut
    Même résultat

    Mon code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ch = curl_init();
    $timeout = 30; 
    $useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt ($ch, CURLOPT_USERAGENT, $useragent);
    curl_setopt ($ch, CURLOPT_HTTPHEADER, array('HTTP_ACCEPT_LANGUAGE: fr'));
    $f = curl_exec($ch);
    curl_close($ch);
    Il n'y aurait pas autre chose qui pourrait faire malfonctionner le script ? (c'est la première fois que j'utilise curl, j'ai juste récupéré ce code).

  20. #20
    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
    Essayez plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_setopt ($ch, CURLOPT_HTTPHEADER, array('ACCEPT_LANGUAGE: fr'));
    Puisque cURL préfixe toutes les entêtes de HTTP_.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [SimpleXML] Supprimer les messages d'erreur de SimpleXMLElement
    Par cybertj dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 21/05/2007, 21h42
  2. [SimpleXML] erreur avec simple XML sur le constructeur
    Par zulot dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 20/04/2007, 16h06
  3. [SimpleXML] problème simplexml_load_string
    Par mitomat dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 11/03/2007, 16h13
  4. [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
  5. [SimpleXML] pb avec simplexml_load_string
    Par bibile dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 29/07/2006, 12h09

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