Как разобрать плохо сформированный XML в Java? - PullRequest
10 голосов
/ 28 мая 2009

У меня есть 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, поэтому, мне кажется, мне нужен устойчивый к ошибкам синтаксический анализатор.

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

Ответы [ 3 ]

6 голосов
/ 28 мая 2009

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

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

1 голос
/ 17 июня 2011

Я считаю, что JSoup может работать с плохо сформированным XML

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...