Подтвердить что ты не робот

Как предотвратить ошибки синтаксического анализа XML в System.err(stderr)?

Я пишу некоторые модульные тесты, которые намеренно передают плохие строки в парсер Java DOM XML.

например.

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();

String message_xml = ""; // Empty string, not valid XML!!!
ByteArrayInputStream input = new ByteArrayInputStream(message_xml.getBytes());
Document doc = db.parse(input);

Это правильно выбрасывает исключение SAXParseException (это то, что ожидает мой unit test). Но он также записывает сообщение в System.err(stderr) в консоли Java:

[Fatal Error] :1:1: Premature end of file.

Есть ли способ настроить синтаксический анализатор XML, чтобы НЕ писать в stderr?

Я использую Java 1.6SE.

4b9b3361

Ответ 1

Установите собственный ErrorHandler:

db.setErrorHandler(new ErrorHandler() {
    @Override
    public void warning(SAXParseException e) throws SAXException {
        ;
    }

    @Override
    public void fatalError(SAXParseException e) throws SAXException {
        throw e;
    }

    @Override
    public void error(SAXParseException e) throws SAXException {
        throw e;
    }
});