• ベストアンサー

HTMLでのTableタグデータ取得方法

Java素人なので、チョット教えて下さい。 HTML表記で書かれたTableタグ(特にTDタグ)内の情報を取得したいのですが 今はsubstringとか使って、<TD>タグ内の情報をコツコツ取得しています。 ここらへんを一気に取得できるAPI関数はないでしょうか? JavaAPIDocを参照しているのですが、いまいち慣れてないて見つけられません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sasadora
  • ベストアンサー率68% (59/86)
回答No.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;       }     }             } }

macchan0626
質問者

お礼

大変参考になりました。 ありがとうございました!!! まだまだ勉強不足です・・・。

関連するQ&A