Ne peut pas lire un fichier XML avec simplexml_load_string
J'ai essayé de lire le fichier xml, mais il me donne une erreur étrange.
Mon XML est comme suit
<?xml version='1.0' encoding='UTF-8'?>
<response>
<url>http://xyz.com</url>
<token>xxxxxxx<token>
</response>
De lire ce que je suis en utilisant
simplexml_load_string(variable containing xml goes here)
mais il me donne cette erreur
Avertissement: simplexml_load_string() [function.simplexml-load-string]:
Entité: ligne 1: parser error : balise de Début prévue, '<' ne trouve pas dans
sur la ligne 47Avertissement: simplexml_load_string() [function.simplexml-load-string]: 1
en ligne 47Avertissement: simplexml_load_string() [function.simplexml-load-string]: ^
en ligne 47
- L'encodage que vous utilisez pour enregistrer votre fichier xml? Ou est le XML sauvegardé dans une variable? Aussi, cette
<token>xxxxxxx<token>
n'est pas xml bien formé. - Même les erreurs sur codepad.org: codepad.org/0AsEZK8J Il manque un slash!
- Je ne suis pas d'enregistrer le fichier ici.Je reçois ce xml comme une réponse à partir d'une API.Mon codage de la page <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> et doc est de type <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- Je ne comprends pas.où est la barre oblique manquant?
- qu'en est
simplexml_load_string()
?... sachant que la chaîne source est requis pour trouver le véritable problème, BOM ou autrement.
Vous devez vous connecter pour publier un commentaire.
Merci à tous pour l'attention et les réponses,
Mais le problème menti quelque part d'autre
Dans mon curl demander la je n'avais pas défini CURLOPT_RETURNTRANSFER pour vrai et qui est à l'origine du XML de ne pas être enregistré dans la variable et était en quelque sorte a obtenir de l'imprimé à l'écran en donnant l'illusion qu'il est à venir à partir de la variable, mais il ne l'était pas.
Cependant j'ai mis CURLOPT_RETURNTRANSFER à 1 et il me donne des résultats corrects maintenant.
Désolé pour la stupide erreur.
et merci à tous.
La réponse que vous obtenez à partir de l'API n'est pas bien formé/XML valide:
Que c'est une API de réponse vous avez besoin de réparer avant de simplexml peut lire dans. Vous peut faire usage de la extension bien rangé Docs pour résoudre ce problème:
Ceci va produire le code XML suivant par la première fixation des balises non fermées, puis en supprimant vide
token
éléments:Connexes:
Comme vous l'avez justement souligné, CURLOPT_RETURNTRANSFER valeur 1 est très important!