「HTMLをパースする」の編集履歴(バックアップ)一覧はこちら

HTMLをパースする」(2011/05/18 (水) 18:46:59) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

Android SDKにはXMLのパーサがありますが、HTMLのパーサは含まれていません。 そこで外部ライブラリ(TagSoup)を使ってHTMLをパースする方法を紹介します。 #Android内部でもTagSoupが使われているらしいのですが、SDKからは使えないようになっているようです(非公開クラス) ** TagSoupをダウンロードする http://home.ccil.org/~cowan/XML/tagsoup/からjarファイルをダウンロードし、任意の場所に置く ※確認時はバージョン1.2で行いました。 ** jarファイルを取り込む TagSoupを利用したいプロジェクトを右クリックし、[Build Path]-[Add External Archives..]を選択 先ほどダウンロードしたjarファイルを指定してOK
Android SDKにはXMLのパーサがありますが、HTMLのパーサは含まれていません。 そこで外部ライブラリ(TagSoup)を使ってHTMLをパースする方法を紹介します。 #Android内部でもTagSoupが使われているらしいのですが、SDKからは使えないようになっているようです(非公開クラス) ** TagSoupをダウンロードする http://home.ccil.org/~cowan/XML/tagsoup/からjarファイルをダウンロードし、任意の場所に置く ※確認時はバージョン1.2で行いました。 ** jarファイルを取り込む TagSoupを利用したいプロジェクトを右クリックし、[Build Path]-[Add External Archives..]を選択 先ほどダウンロードしたjarファイルを指定してOK 利用までの手順は上記だけです。 具体的な利用例としては下記のようになります。 import java.io.InputStream; import java.io.InputStreamReader; import org.ccil.cowan.tagsoup.Parser; import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; import org.xml.sax.InputSource; import org.xml.sax.Locator; import org.xml.sax.SAXException; public class HtmlReader implements ContentHandler { public void parse(InputStream is) { Parser parser = new Parser(); try { parser.setContentHandler(this); parser.setFeature(Parser.namespacesFeature, false); parser.parse(new InputSource(new InputStreamReader(is, "UTF-8"))); } catch (Exception e) { e.printStackTrace(); } } } あとはSAXインタフェースでコールバックされるので、コールバック関数内でやりたい処理を追加すればよい(コールバック関数については割愛) なお、文字コードの自動判別は行われないので、文字化けする場合は自前で文字コードを指定する必要がある(上記例ではUTF-8を指定)

表示オプション

横に並べて表示:
変化行の前後のみ表示: