Поскольку ваш отправитель представляет вам недопустимый XML, его необходимо исправить, прежде чем он попадет в анализатор, если вы хотите избежать этого исключения. Если вы не можете исправить отправителя, вам понадобится какой-то шаг предварительной обработки.
Если ситуация такова, что у вас есть лишние нулевые байты после закрывающего тега, как не определено одним из ваших ответов на другой ответ, это может быть то, что вы можете легко выполнить, заключив свой входной поток в FilterInputStream
, Вы реализуете, чтобы пропустить нулевые байты.
Если проблема сложнее, чем просто нулевые символы, вам, конечно, понадобится более сложный фильтр, который может быть трудным.
Если вы используете ContentHandler
, вы можете добавить к нему обратный вызов, чтобы он мог сообщить вызывающему коду, когда обработан конечный корневой тег, и, основываясь на этом знании, вызывающий код может иметь логику в его обработчик для исключения, чтобы просто игнорировать его, если конец был сигнализирован.
На этом этапе все, что должно было быть сделано парсером, вероятно, все равно было сделано! Но, похоже, это решение не подходит для вашей ситуации.