我有引用 dtd 文件的 xml 文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE varman SYSTEM "referenced.dtd">
...
我设法用 JAXP 读取了这些文件,但前提是 referenced.dtd 与 xml 文件位于同一文件夹中。否则,我会收到无法加载 dtd 文件的异常。而且我找不到插入处理程序或任何东西来解决这个缺失资源的地方。请赐教!
我有引用 dtd 文件的 xml 文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE varman SYSTEM "referenced.dtd">
...
我设法用 JAXP 读取了这些文件,但前提是 referenced.dtd 与 xml 文件位于同一文件夹中。否则,我会收到无法加载 dtd 文件的异常。而且我找不到插入处理程序或任何东西来解决这个缺失资源的地方。请赐教!
使用属性设置允许外部路径:
添加错误处理程序以捕获不受支持的属性:
public boolean isNewPropertySupported() {
try {
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser parser = spf.newSAXParser();
parser.setProperty("http://javax.xml.XMLConstants/property/accessExternalDTD", "file");
} catch (ParserConfigurationException ex) {
fail(ex.getMessage());
} catch (SAXException ex) {
String err = ex.getMessage();
if (err.indexOf("Property 'http://javax.xml.XMLConstants/property/accessExternalDTD' is not recognized.") > -1)
{
//expected, jaxp 1.5 not supported
return false;
}
}
return true;
}