ということで自作HTMLパーサは結構細かい穴があって一部のHTMLでうまくパースできないので、出来合いのHTMLパーサに手を出してみた。HTMLを読んでorg.w3c.dom.Documentオブジェクトを出してくれるパーサはShaniXmlParserとかJtidyとかがあるのだけれども、JTidyはまだしもShaniXMLParserってなんか遅くない? しかもarea要素を空要素とみなしてないみたい。あんまり使えないー。しかも、出てきたDocumentオブジェクトをDocumentTraversalオブジェクトにキャストしようとすると ClassCastException が出る。これはJTidy (8.0のスナップショット20060801.101359-3) でもそうなる。やっぱりTreeWalkerとか使いたかったら Xerces を使わないとダメ? Xalanでもいいのかな。まぁいいや。ていうかおまいらJとかXとか好きですね。
ということで、ダメHTMLを整形式HTMLに変換して文字列で出力するプロキシなんかを置いて、そこを通してXercesで処理するのが妥当な線だということで。