Ошибка проверки XML: EntityRef: ожидается ';'

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

ошибка в строке 102 в столбце 103: EntityRef: ожидание ';'

Не в состоянии понять, в чем может быть проблема.

2 ответа

Ваш URL должен быть экранирован.

Символ & используется в XML для вставки ссылки на символ с синтаксисом &name; (примечание ; после имени). Парсер ожидает : но он не может найти его (есть больше доступных разделителей, это просто наиболее распространенный случай).

Затем решение ускользает (то, как это делается, зависит от языка, который вы используете для генерации этого XML-файла), но конечный результат должен быть примерно таким:

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

Обратите внимание, что равнина & была заменена его экранированной версией &amp;, Для дальнейших деталей смотрите эту простую статью.

Другое возможное решение (если вы не хотите / не можете уйти) - заключить URL в раздел CDATA следующим образом:

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

Другой способ, как показано ниже:

Вместо "CDATA"мы могли бы использовать htmlspecialcharsPHP встроенная функция для URL-узла. это будет работать мало из XML-канала, они не хотят CDATA в выводе XML, так что это будет полезно для кого-то.

Спасибо

Сегодня я наткнулся на ту же проблему, если вы создаете ссылки с помощью PHP, вы можете использовать эту функцию:

htmlspecialchars();

Он отформатирует нужную строку для вас в символы HTML, чтобы вы могли вставить ее как <loc>.

Просто замените "&" на "& a m p;" без пробелов я сюда положил!

Другие вопросы по тегам