现有如下代码段:是一个table,限于版面我只截取了一部分,我想将只有div和input的tr过滤出来(如红色字体所示),我已经将所有的tr放到TableRow[]里面了,请问下一步该怎么过滤?
<tr>
    <td colspan="4"><hr align=left noshade size=1></td>
    </tr>
  <tr>
    <td width="91" rowspan="7" bgcolor="#bababa">指定作者、关键词</td>
    <td width="3" rowspan="7"> </td>
    <td width="79"><div align="right">作者    </div></td>
    <td width="574"><input type="text" name="txt_zuozhe">
    检索文章中任意一个作者姓名。如,张三</td>
  </tr>
  <tr>
    <td><div align="right">作者    </div></td>
    <td><input type="text" name="txt_zuozhe2">
      检索文章中任意一个作者姓名。如,李四</td>
  </tr>
  <tr>
    <td><div align="right">作者单位    </div></td>
    <td><input name="txt_zuozhedw" type="text">
    检索文章中任意一个作者单位。如,大学</td>
  </tr>
  <tr>
    <td><div align="right">题目    </div></td>
    <td><input name="txt_wenti" type="text">      检索文章的题目(支持模糊查找)</td>
  </tr>
  <tr>
    <td><div align="right">摘要|题目 </div></td>
    <td><input type="text" name="txt_zhaiyao">
    检索文章的摘要或题目(支持模糊查找)</td>
  </tr>
  <tr>
    <td><div align="right">关键词    </div></td>
    <td><input type="text" name="txt_guanjianci">
    检索文章的关键词(支持模糊查找)</td>
  </tr>
  <tr>
    <td><div align="right">分类号|pacs    </div></td>
    <td><input type="text" name="txt_fenleihao">
    检索文章的分类号或pacs</td>
  </tr>
  <tr>
    <td colspan="4"><hr align=left noshade size=1></td>
    </tr>
  <tr>

解决方案 »

  1.   

    那你下一步需要过滤什么就从TableRow[]读取过滤
      

  2.   

    可以使用 HTMLParser 的 AttributeMatchFilter 去找所有v align="right" 的td数组 然后取第一个 <td><input type="text" name="txt_zuozhe2">
    检索文章中任意一个作者姓名。如,李四</td>
    </tr> <tr>上面那个就更简单了 直接去抓取  name="txt_zuozhe2" 的空间 取值 
    参考文章
    HTMLParser 之 AttributeMatchFilter再次出刃
      

  3.   

    匹配一个属性是容易, 源文件有N个, 每个name都不一样你要搞多少过滤器列??
      

  4.   

    这个问题可以这样做:
    1 对每一个tr判断是否有div和input 
      int j=0;
      TableRow UsedTableRow=new TableRow[100];
      NodeFilter filter=new NodeClassFilter(InputTag.class);
      NodeFilter filter1=new NodeClassFilter(Div.class);
      for(int i=0;i<TableRow.size;i++){
        TableRow row=(TableRow)TableRow[i];
        NodeList nodelist=row.getChildren().extractAllNodesThatMatch(filter,true); 
        NodeList nodelist1=row.getChildren().extractAllNodesThatMatch(filter1,true);
        if(nodelist!=null&&nodelist1!=null) {
           UsedTableRow[j]=row;
           j++
        }
      }
        这样符合条件的就存入UsedTableRow中了
      

  5.   

    很好,该方法可行,不过需要修改一下,将filter1应该为TagNameFilter("div"),用NodeClassFilter无法将其过滤出来,呵呵,谢谢了!!