3

我有以下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:序言中不允许内容。

[致命错误]:1:1:文件过早结束。

我认为罪魁祸首是docBuilder.parse(xmlFile)。我希望能够禁用此默认输出并“静音”文档构建器,并且我看不到此对象上允许我执行此类操作的任何 setter 方法。我在这里有补救措施还是我被困住了?

4

1 回答 1

3

使用DocumentBuilder.setErrorHandler设置ErrorHandler. 不要被包名弄糊涂了。即使它说“org.xml.sax”,它也是您想要的。我认为您可以只使用 DefaultHandler,因为 Javadoc 说它会忽略错误和警告。如果它仍然太冗长,您可以提供自己的实现。

DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
db.setErrorHandler(new DefaultHandler());
于 2012-06-05T01:53:40.340 回答