使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
提交
取消
