Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

Символ

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

Решение затем экранируется (как это делается, зависит от языка, который вы используете для создания этого 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>

Ответ 2

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

Вместо "CDATA" мы могли бы использовать htmlspecialchars PHP собственную функцию для url node. он будет работать с небольшим количеством XML-корма, который им не нужен CDATA в xml-выходе, поэтому это будет полезно для кого-то.

Спасибо

Ответ 3

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

htmlspecialchars();

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