我正在编写一些单元测试,它们故意将错误的字符串传递给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 (这正是我的单元测试所期望的)。但它也在向Java console中的System.err (stderr)写入一条消息:
[Fatal Error] :1:1: Premature end of file.
有没有办法将XML解析器配置为不写入stderr?
我使用的是Java1.6SE。
发布于 2011-10-08 02:52:59
安装您自己的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;
}
});
https://stackoverflow.com/questions/7691585
复制相似问题