1

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() );
    }

オーバーライド可能なメソッドが次のようになっているため、それは解決策でSAXReaderreader.setEntityResolver( ??? );ないようです。

public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException

私が探しているのは次のようなものです

reader.setTrueEntityResolver( new EntityResolver(){
    public InputStream resolve( String name ){ ... }
}
4

2 に答える 2

0

あなたが言ったように、DOM4J は HTML を解析するためのものではありません。私はむしろtagsoupHTML Cleanerのようなものを使いたいです。エンティティではなく、HTML は XML ではありません。

于 2012-11-04T01:48:55.700 に答える