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 に答える