Я не думаю, что вы можете легко это сделать. Вы предоставляете парсеру SAX ресурс (поток) для чтения, а затем закрываете его, и парсер SAX все еще ожидает чтения из него - следовательно, он (не безосновательно!) Выбрасывает «неожиданное завершение документа».
Если вы хотите сделать это чисто, я думаю, что ваш обработчик SAX обработчик , который вы реализовали, должен молча глотать события, как только вы решили игнорировать дальнейшие события.
например. ваши реализации startElement()
, endElement()
и т. д. должны выполнить проверку, чтобы убедиться, что вы все еще заинтересованы в этих событиях перед обработкой.
Таким образом, синтаксический анализатор SAX может работать без ошибок до конца документа без обработки каких-либо событий.
В качестве альтернативы, почему бы не записать тот факт, что вы закрыли входной поток, а затем, когда вы получите событие «неожиданное завершение документа», посмотрите, действительно ли оно ожидалось . И регистрируйте ошибку, только если она действительно была неожиданной.