Один из подходов, который МОЖЕТ сработать (в терминах Java вам придется переводить в Scala), состоит в том, чтобы предоставить вход для парсера из вашего собственного Reader, использовать выходные данные парсера в SAX ContentHandler и получить обратную-канал от ContentHandler к Reader, так что, как только о событии endElement для самого внешнего элемента сообщается, он сообщает Reader о прекращении подачи ввода.
Причина, по которой он может не работать, заключается в том, что анализатор может буферизоватьот читателя, поэтому к тому времени, когда ваш ContentHandler скажет Reader прекратить, уже слишком поздно.
Обидно, что анализаторы XML не имеют возможности остановить синтаксический анализ без ошибок при обнаружении закрытияконец тега, но если есть парсер с этой опцией, я не встречал его.Вы всегда можете попробовать изменить парсер с открытым исходным кодом!