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

Я пишу некоторые модульные тесты, которые преднамеренно передают плохие строки в синтаксический анализатор 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 (то, что мой модультест ожидает).Но он также записывает сообщение в System.err (stderr) в консоли Java:

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

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

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

1 Ответ

28 голосов
/ 07 октября 2011

Установите свои 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;
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...