如何防止将XML解析错误写入System.err(stderr)?

时间:2011-10-07 18:47:21

标签: java xml dom xml-parsing

我正在编写一些故意将错误字符串传递给Java DOM XML解析器的单元测试。

E.g。

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(这是我的单元测试所期望的)。但它也在Java控制台中向System.err(stderr)写了一条消息:

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

有没有办法将XML解析器配置为不写入stderr?

我正在使用Java 1.6SE。

1 个答案:

答案 0 :(得分:28)

安装自己的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;
    }
});