这个类是HTMLEditorKit的内部类,也是一个回调类,可以通过解释结果回调.我想用它里面的方法查找标签为title的元素的内容,不知道思路有没有错,请大家指教.下面我已经新建一个类继承了这个内部类.先重写它第一个方法获得开始标签为TITLE的pos;
public parser extends HTMLEditorKit.parserCallBack{
....
private int titleBegin;
private int titleEnd;
....
....
 public void handleStartTag(HTML.Tag t,
                          MutableAttributeSet a,
                          int pos){
 if (t == HTML.Tag.TITLE)
        titleBegin=pos;
....
....
}
再重写它第二个方法,获得结束标签为TITLE的pos;
 public void handleEndTag(HTML.Tag t,
                         int pos){
  if(t.equals(HTML.Tag.TITLE))titleEnd=pos;
....
....
    }
但是当我已经获得了TITLE两端位置后,不知道怎样提取两个位置之间的具体内容,并转化为String类型.这个内部类是HTMLEditorKit的内部类,如果我用this.getClass()方法获得当前对象,那获得的对象如果强制转换,应该用外部类HTMLEditorKit类型的?还是用HTMLEditorKit.parserCallBack类型的?因为刚开始学,可能问题有点弱,请大虾们指点,谢谢~~

解决方案 »

  1.   

    终于弄好了,超累的~原来这个类里还有一个方法
    public void handleText(char[] data,
                           int pos){...}
    这个方法是当遇到HTML文本的时候自动调用的,之前的设的两个int变量其实没有什么用,只要设一个状态位就可以完成提取类似的HTML文本了
    .例如我设了一个int titleStatus=-1;
    public parser extends HTMLEditorKit.parserCallBack{
    int titleStatus=-1;
    ....
    //当遇到开始类标记时,会自动调用这个方法
     public void handleStartTag(HTML.Tag t,
                                   MutableAttributeSet a,
                                   int pos){      if (t == HTML.Tag.TITLE)titleStatus=pos;//也可以定义为其它值,如1,23,不是-1就好了
    ...
    ..
    }//当遇到结束类标记时,会自动调用这个方法:
     public void handleEndTag(HTML.Tag t,
                                   int pos){
            if(t.equals(HTML.Tag.TITLE)) titleStatus=-1;//把titleStatus的值重新设为-1
              }
    //当遇到HTML文本的时候自动调用这个方法:
    public void handleText(char[] data,
                           int pos){
     if((titleBegin!=-1))//作一简单的判断,判断是否到了TITLE标签的开始,如果是的话,取出当前数据,传递出去,report是我定义好的一个接口
    {                    //这个方法遇到其它标记时会自动返回的,也就是说TITLE的终界自动确定了,data里的内容就是TITLE的内容了
        String str=new String(data);
        report.spiderFoundTitle(base,str);
      }
    }
    可能有错,希望大家更正,谢谢~~
      

  2.   

    楼主有始有终的学习态度值得嘉奖,我刚刚接触HTMLEditorKit.parserCallBack,也想学习机理