Анализатор XML может интерпретировать часть «» в качестве объекта xml, и поскольку она не устраняет, кажется, что она терпит неудачу и поедает строку. Объекты XML в основном используются для включения метасимволов, которые в противном случае интерпретировались бы как инструкции о том, как читать файл. Большинство, если не все библиотеки вывода xml будут автоматически кодировать & до & amp; (без пробела перед точкой с запятой) для вас, пока вы выписываете элементы по умолчанию.
У вас есть 3 варианта. Одним из них является замена URL в XML с
http://www.url.com/content/hello&whatsup
Вы можете сделать какой-то первый проход по файлу, чтобы правильно кодировать & «s, но не может быть никакого надежного способа сделать это. Вы можете попробовать заменить & на replaceme_ampersand, прочитать его и заменить на &. Но вы должны убедиться, что файл не содержит фактических ссылок на законные сущности (или быть в порядке, не разрешая их). Другая возможность заключается в том, чтобы использовать побег CDATA вокруг содержания вы знаете, чтобы содержать неэкранированные символы вроде так:
<![CDATA[http://www.url.com/content/hello&whatsup]]>
Второй вариант не использовать любой XML-парсер и вместо того, чтобы разобрать файл вручную, ищет для начала/окончания тегов с помощью шаблон регулярного выражения. Я бы выбрал этот вариант, в зависимости от сложности xml-файла и того, что он содержит.
Третий вариант - попытаться найти синтаксический анализатор или параметр xml, который позволит вам изменить поведение по умолчанию, когда оно обнаружит неизвестную/недействительную ссылку на объект xml. Вы можете переопределить это поведение «есть сущность», либо подняв ошибку, либо оставив недопустимый текст как есть. Ты сам по себе!