Я использую Xerces2 в Java и имею XMLGrammarCachingConfiguration. Я использую его для анализа XML-схемы (xsd) в пул грамматики, вызывая parseGrammar. Он разбирает файл xsd отлично, но он сообщает о всех ошибках и предупреждениях для stderr (я использую Eclipse, чтобы это было зафиксировано в консоли). Мне удалось изменить xsd так, чтобы у него была фатальная ошибка, и это привело к исключению XNIException, которое мое приложение могло бы поймать, как и ожидалось.как я могу захватить вывод stderr, когда я вызываю XMLGrammarCachingConfiguration.parseGrammar()?
Я попытался использовать метод XMLGrammarCachingConfiguration.setErrorHandler() и передал ему DefaultErrorHandler, который я создаю с помощью собственного PrintWriter. Я также попытался передать свой собственный обработчик ошибок, который реализует интерфейс XMLErrorHandler. Тем не менее он отображается в консоли, а не в файле, который использует PrintWriter.
Кажется, что все должно быть так просто. Может ли кто-нибудь сказать мне, что я делаю неправильно?
-edit: Я должен добавить, что я использую пользовательский XMLEntityResolver, и сообщения об ошибках, которые я хочу захватить, - это когда мой резольвер не может разрешить сущность и поэтому возвращает null из ее разрешенияEntity (), что означает, что распознаватель по умолчанию пытается его решить. то есть сообщения об ошибках поступают из основного распознавателя объекта по умолчанию.