2

我有引用 dtd 文件的 xml 文件。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE varman SYSTEM "referenced.dtd">
...

我设法用 JAXP 读取了这些文件,但前提是 referenced.dtd 与 xml 文件位于同一文件夹中。否则,我会收到无法加载 dtd 文件的异常。而且我找不到插入处理程序或任何东西来解决这个缺失资源的地方。请赐教!

4

1 回答 1

1

使用属性设置允许外部路径:

添加错误处理程序以捕获不受支持的属性:

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;
  }
于 2013-12-09T23:23:31.547 回答