2008年9月19日金曜日

NekoHTMLでbrタグだけ残す

スズキです。

以前NekoHTML使って、
HTMLへのフィルターのかけ方について書きました。
▼JavaでHTMLタグを除いたり閉じてないタグを閉じたり
http://suz-lab.blogspot.com/2008/09/javahtml.html

これは、DBに格納されている、HTMLタグの入った文章を
携帯表示に適した形に調整するための調査・実験でした。

文章中のタグがXML的に不完全だと、Durianの
コンテンツ変換時にXMLのパースエラーになってしまいます。

なので、閉じてないタグは閉じないといけません。
また、携帯に不要なタグも除去する必要があります。
(今回はbrタグ以外除去することにしています)

なので、特定のタグ以外を除去し、その特定のタグも
閉じてないものは閉じてる状態にする必要があります。

しかし、実は、下記のように簡単に実現することができました。
(convertHtml関数については上述の記事を参照)

public void convertForMobile() throws Exception {
  String htmlFragment = "<p> あああ <p> い<br>いい <p> ううう";
  ElementRemover remover = new ElementRemover();
  // brタグは除去しない
  remover.acceptElement("br", null);
  XMLDocumentFilter[] filters = { remover };
  System.out.println(convertHtml(filters, htmlFragment));
}
※空白は全角を使っています。

ポイントはacceptElementです。(コメントの通りです)
また、これだけで、閉じてないbrタグも閉じた形にしてくれました。

以下、実行結果です。

あああ い<BR/>いい ううう

あとは、Converter(Teeda)にするだけだ!

--
http://suz-lab.blogspot.com/

0 コメント: