プロが教える店舗&オフィスのセキュリティ対策術

Java素人なので、チョット教えて下さい。

HTML表記で書かれたTableタグ(特にTDタグ)内の情報を取得したいのですが
今はsubstringとか使って、<TD>タグ内の情報をコツコツ取得しています。

ここらへんを一気に取得できるAPI関数はないでしょうか?
JavaAPIDocを参照しているのですが、いまいち慣れてないて見つけられません。

よろしくお願いします。

A 回答 (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;
      }
    }
    
    
  }
}
    • good
    • 0
この回答へのお礼

大変参考になりました。
ありがとうございました!!!

まだまだ勉強不足です・・・。

お礼日時:2002/08/14 00:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!