web-dev-qa-db-fra.com

Erreur de validation XML: EntityRef: attend ';'

<url>
  <loc>http://www.ezed.in/ezed/courseDemoIntroPage.do?courseId=COU10000000138003530&checkingCourseFrom=preLogin#.U2DcKvmSySo</loc>
</url>

erreur sur la ligne 102 à la colonne 103: EntityRef: attend ';'

Impossible de comprendre quel pourrait être le problème.

32
user99322

Votre URL doit être échappée.

& est utilisé en XML pour insérer une référence de caractère avec la syntaxe &name; (Remarque ; après le nom). L'analyseur attend un ; mais il ne le trouve pas (il y a plus de délimiteurs disponibles, c'est juste le cas le plus courant).

La solution s'échappe alors (la façon dont cela se fait dépend du langage que vous utilisez pour générer ce fichier XML) mais le résultat final doit être quelque chose comme ceci:

<url>
  <loc>http://www.ezed.in/ezed/courseDemoIntroPage.do?courseId=COU10000000138003530&amp;checkingCourseFrom=preLogin#.U2DcKvmSySo</loc>
</url>

Notez que & a été remplacé par sa version d'échappement &amp;. Pour plus de détails, voir cet article simple .

Une autre solution possible (si vous ne voulez pas/vous ne pouvez pas vous échapper) est de placer l'URL dans un section CDATA comme ceci:

<url>
  <loc><![CDATA[http://www.ezed.in/ezed/courseDemoIntroPage.do?courseId=COU10000000138003530&checkingCourseFrom=preLogin#.U2DcKvmSySo]]></loc>
</url>
76
Adriano Repetti

Une autre manière comme ci-dessous:

Au lieu de "CDATA", nous pourrions utiliser la fonction native htmlspecialcharsPHP pour le noeud url. cela fonctionnera peu de flux xml dont ils ne veulent pas CDATA en sortie xml donc cela sera utile pour quelqu'un.

Merci

4
Vinod Patidar

Je suis tombé sur le même problème aujourd'hui, si vous construisez les liens avec PHP vous pouvez utiliser cette fonction:

htmlspecialchars();

Il formatera la chaîne souhaitée pour vous en caractères HTML afin que vous puissiez l'insérer en tant que <loc>.

0
Bullsized