Dom4j を使用して HTML ドキュメントを解析しています。Dom4j は XML を想定しているため、HTML エンティティは宣言されません。ドキュメントの DTD で宣言することは可能ですが、外部入力を解析しているため、適切ではありません。パーサーでプログラムで宣言したいと思います。
これが私のコードです:
// Read.
final DocumentFactory df = DOMDocumentFactory.getInstance();
SAXReader reader = new SAXReader();
Document doc, outDoc;
try {
doc = reader.read( new StringReader(htmlStr) );
}
catch( Exception ex ){
throw new RuntimeException("Error parsing the HTML:\n " + ex.toString() );
}
オーバーライド可能なメソッドが次のようになっているため、それは解決策でSAXReader
はreader.setEntityResolver( ??? );
ないようです。
public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException
私が探しているのは次のようなものです
reader.setTrueEntityResolver( new EntityResolver(){
public InputStream resolve( String name ){ ... }
}