如何安静org.w3c.dom.Document?

时间:2012-06-04 16:13:35

标签: java xml dom

我有以下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方法。我在这里有补救措施还是我坚持这个?

1 个答案:

答案 0 :(得分:3)

使用DocumentBuilder.setErrorHandler设置ErrorHandler的实施。不要被包名混淆。即使它说" org.xml.sax"这是他们想要的。我认为你可以使用DefaultHandler,因为Javadoc说它忽略了错误和警告。如果它仍然太冗长,你可以提供自己的实现。

DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
db.setErrorHandler(new DefaultHandler());