Erreur XML à l'esperluette (& amp;)
J'ai un fichier php qui affiche un xml basé sur une db MySql.
J'obtiens une erreur à chaque fois exactement au point où il y a un & signe.
Voici de php:
$query = mysql_query($sql);
$_xmlrows = '';
while ($row = mysql_fetch_array($query)) {
$_xmlrows .= xmlrowtemplate($row);
}
function xmlrowtemplate($dbrow){
return "<AD>
<CATEGORY>".$dbrow['category']."</CATEGORY>
</AD>
}
La sortie est ce que je veux, c'est à dire les sorties de fichier la bonne catégorie, mais donne toujours une erreur.
Le message d'erreur indique: xmlParseEntityRef: aucun nom
Et puis, il souligne le caractère exact qui est un & signe.
Ce reproche que si le $dbrow['category']
est quelque chose avec un & signe, par exemple: "voitures & camions", ou "ordinateurs & téléphones".
Ce que quelqu'un sait quel est le problème?
BTW: j'ai de l'encodage UTF-8 dans tous les documents, ainsi que la sortie xml.
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
&
en XML commence une entité. Comme vous n'avez pas défini une entité&WhateverIsAfterThat
une erreur est renvoyée. Vous devez vous échapper avec&
.Comment échapper à arobases en XML
Pour échapper à l'autre les caractères réservés:
Vous avez besoin pour activer
&
dans son entité&
ou enveloppez-le contenu dans CDATA balises.Si vous choisissez l'entité en route, il y a d'autres caractères que vous avez besoin de se transformer en entités:
De fond: Méfiez-vous de l'esperluette lors de l'utilisation de XML
Wikipédia: Liste de caractères XML références d'entité
Vous avez raison: c'est plus de contexte - l'exemple est en relation avec "la façon de traiter avec les données contenant" & " quand nous transmettre ces données à SimpleXml. Bien sûr, il y a une autre solution pour utiliser
<![CDATA[some stuff]]>