使DocumentBuilder.parse忽略DTD引用当我在这个方法中解析我的xml文件(变量f)时,我收到一个错误C:\ Documents and Settings \ joe \ Desktop \ aicpcudev \ OnlineModule \ map.dtd(系统找不到指定的路径)我知道我没有dtd,也不需要它。如何在忽略DTD引用错误的同时将此File对象解析为Document对象?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;}
3 回答
慕虎7371278
TA贡献1802条经验 获得超4个赞
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也能正常工作?
眼眸繁星
TA贡献1873条经验 获得超9个赞
我发现DTD文件与XML一起出现在jar文件中的问题。我根据这里的例子解决了这个问题,如下: -
DocumentBuilder db = dbf.newDocumentBuilder();db.setEntityResolver(new EntityResolver() { public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { if (systemId.contains("doc.dtd")) { InputStream dtdStream = MyClass.class .getResourceAsStream("/my/package/doc.dtd"); return new InputSource(dtdStream); } else { return null; } }});
添加回答
举报
0/150
提交
取消