Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何静默org.w3c.dom.Document?_Java_Xml_Dom - Fatal编程技术网

Java 如何静默org.w3c.dom.Document?

Java 如何静默org.w3c.dom.Document?,java,xml,dom,Java,Xml,Dom,我有以下Java方法: private static Document documentFromFile(final File xmlFile) { Document document = null; try { DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory .newInstance(); DocumentBuilder docBu

我有以下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方法允许我执行类似操作。我在这里有补救措施吗?还是我被困在这里?

用于设置
错误处理程序的实现。不要被包名搞糊涂了。尽管上面写着“org.xml.sax”,但这正是您想要的。我认为您可以使用DefaultHandler,因为Javadoc说它忽略错误和警告。如果仍然太冗长,您可以提供自己的实现

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

我们谈论的是哪一个DOM操纵库?什么版本?DocumentBuilderFactory有一个setAttribute方法,但您必须知道要设置的属性名。请查看是否适用于您:我正在使用
javax.xml.parsers.*
作为lib,并且正在使用XSD模式验证。。。