java – Make DocumentBuilder.parse忽略DTD引用

当我在这个方法中解析我的xml文件(变量f)时,我得到一个错误

C:\Documents and Settings\joe\Desktop\aicpcudev\OnlineModule\map.dtd (The system cannot find the path specified)

我知道我没有dtd,也不需要它。如何将此File对象解析为Document对象而忽略DTD引用错误?

private static Document getDoc(File f, String docId) throws Exception{
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document doc = db.parse(f);


    return doc;
}
最佳答案
@anjanb建议的类似的方法

    builder.setEntityResolver(new EntityResolver() {
        @Override
        public InputSource resolveEntity(String publicId, String systemId)
                throws SAXException, IOException {
            if (systemId.contains("foo.dtd")) {
                return new InputSource(new StringReader(""));
            } else {
                return null;
            }
        }
    });

我发现简单地返回一个空的InputSource工作就好了?

转载注明原文:java – Make DocumentBuilder.parse忽略DTD引用 - 代码日志