Вопрос

У меня есть XML, который мне нужно проанализировать, но я не могу контролировать его создание.К сожалению, это не очень строгий XML-файл и содержит такие вещи, как:

<mytag>This won't parse & contains an ampersand.</mytag>

Классам javax.xml.stream это совсем не нравится, и справедливо ошибка с:

javax.xml.stream.XMLStreamException: ParseError at [row,col]:[149,50]
Message: The entity name must immediately follow the '&' in the entity reference.

Как я могу обойти это?Я не могу изменить XML, поэтому, думаю, мне нужен анализатор, устойчивый к ошибкам.

Я бы предпочел исправление, которое не требует слишком больших сбоев в существующем коде синтаксического анализатора.

Это было полезно?

Решение

Если это недопустимый XML (как указано выше), то ни один анализатор XML не будет обрабатывать его (как вы определили).Если вам известен масштаб ошибок (например, описанная выше проблема с сущностью), то самым простым решением может быть запуск процесса исправления (исправление сущностей, таких как вставка сущностей), а затем передача его существующему анализатору.

В противном случае вам придется самостоятельно закодировать его со встроенной поддержкой таких аномалий.И я не могу поверить, что это что-то иное, кроме как утомительная и подверженная ошибкам задача.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top