我有以下Java方法:
private static Document documentFromFile(final File xmlFile)
{
Document document = null;
try
{
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder docBuilder = docBuilderFactory
.newDocumentBuilder();
document = docBuilder.parse(xmlFile);
document.getDocumentElement().normalize();
}
catch(Exception exc)
{
// Handle exception...
}
return document;
}
在我的测试方法中,如果我将此方法传递给格式错误的XML文件,我会在控制台上获得各种错误输出:
[致命错误]:1:1:prolog中不允许内容。
[致命错误]:1:1:文件提前结束。
我认为罪魁祸首是docBuilder.parse(xmlFile)
。我希望能够禁用此默认输出并“静音”文档构建器,并且我没有在此对象上看到任何允许我执行此类操作的setter方法。我在这里有补救措施还是我坚持这个?
答案 0 :(得分:3)
使用DocumentBuilder.setErrorHandler设置ErrorHandler
的实施。不要被包名混淆。即使它说" org.xml.sax"这是他们想要的。我认为你可以使用DefaultHandler,因为Javadoc说它忽略了错误和警告。如果它仍然太冗长,你可以提供自己的实现。
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
db.setErrorHandler(new DefaultHandler());