Как предотвратить ошибки синтаксического анализа 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.
Ответы
Ответ 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;
}
});