【问题标题】:How to quiet org.w3c.dom.Document?如何让 org.w3c.dom.Document 安静下来?
【发布时间】:2012-06-08 17:08:37
【问题描述】:

我有以下 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 方法。我在这里有补救措施还是我被困住了?

【问题讨论】:

标签: java xml dom


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    相关资源
    最近更新 更多