- ベストアンサー
HTMLでのTableタグデータ取得方法
Java素人なので、チョット教えて下さい。 HTML表記で書かれたTableタグ(特にTDタグ)内の情報を取得したいのですが 今はsubstringとか使って、<TD>タグ内の情報をコツコツ取得しています。 ここらへんを一気に取得できるAPI関数はないでしょうか? JavaAPIDocを参照しているのですが、いまいち慣れてないて見つけられません。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
一気に取得できるようなAPIはありませんが、 自分で作るとなったときに便利なものはあります。 javax.swing.text.html.parser.ParserDelegatorと、 javax.swing.text.html.HTMLEditorKit.ParserCallback を使うと、HTMLタグの解釈は楽だと思います。 (substringで部分文字列を切り取るようなことは不要です。) ちょっと長くて申し訳ないですが、サンプルです。 実際に動かして試してみてください。 ---------------------------------------- import java.io.*; import javax.swing.text.MutableAttributeSet; import javax.swing.text.html.parser.ParserDelegator; import javax.swing.text.html.HTMLEditorKit; import javax.swing.text.html.HTML; public class ParserTest{ /** * 引数でHTMLファイルを指定 */ public static void main(String[] args) throws IOException, FileNotFoundException{ new ParserTest(args[0]); } public ParserTest(String file)throws IOException, FileNotFoundException{ ParserDelegator parser = new ParserDelegator(); HTMLEditorKit.ParserCallback mycallback = new MyCallBack(); parser.parse(new FileReader(file), mycallback, true); } private static class MyCallBack extends HTMLEditorKit.ParserCallback{ boolean td = false; public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos){ if (t.equals(HTML.Tag.TD)){ td = true; } } public void handleText(char[] data, int pos){ if (td){ System.out.println(new String(data)); } } public void handleEndTag(HTML.Tag t, int pos){ if (t.equals(HTML.Tag.TD)){ td = false; } } } }
お礼
大変参考になりました。 ありがとうございました!!! まだまだ勉強不足です・・・。