Асинхронная сущность XML вызывает проблемы проверки - как мне избежать этого?

Я генерирую статические HTML-страницы и до сих пор обнаружил, что лучший способ сделать это - использовать XML для Linq, поскольку это делает манипулирование документом очень похожим на JavaScript/jQuery.

До сих пор это работало хорошо, за исключением того, что я добавил кнопку AddThis на свой веб-сайт, и следующая строка вызвала исключение XmlException:

<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=xa-51f1474f46ee2d87&async=1&domready=1"></script>

Исключение составляет:

'=' - неожиданный токен. Ожидаемый токен - ";". Линия 69, позиция 114.

Я запустил строку на http://www.xmlvalidation.com/ и получил следующий результат:

110 Ссылка на сущность "async" должна заканчиваться на ';' разделитель.

Я искал в Google несколько минут, пытаясь найти информацию об асинхронном объекте или о том, как я могу его обойти, но во многих документах утверждается, что в XML есть только 5 объектов, например, эта страница: http://www.quackit.com/xml/tutorial/xml_entities.cfm

Как я могу избежать этой сущности?

Дополнительный вопрос: что такое асинхронная сущность и почему ее практически нигде нет в Интернете?

1 ответ

Решение

Оказывается, парсеры XML ищут "&" и предполагают, что любой амперсанд является началом сущности. Есть два способа избежать амперсандов в зависимости от контекста.

Можно использовать сущность XML &amp;

Поскольку это URL, следует использовать %26 для кодирования URL

Линия, таким образом, выглядит следующим образом:

<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=xa-51f1474f46ee2d87%26async=1%26domready=1"></script>
Другие вопросы по тегам