请问htmlparser能否解析以经下载的htm呢,或者请问哪种方法可以解析以下载的htm,如何操作?
我想实现的是将htm中指定标签间的数据(去掉htm代码)显示出来,包括一些拼接操作。例如:
<table>
  <tr>
    <td>
     <p><span>111</span><span>222</span></p>
    </td>
    
    <td>
    ....
    </td>
  </tr>
  
  <tr>
  ...
  </tr>
  
</table>

解决方案 »

  1.   

    dom4j,jdom 都可以解析吧,只要符合标准
      

  2.   

    我看了看决定还是用htmlparser,我想要的操作是我想将span中间为like【java】的一段提取出来(因为前面有数字),数字+【代表新的一个段落像下面3【java】和4【ajax】就属于两个部分。
    <p> <span>3【java】 </span>  </p>
    <table>
      <tr>
        <td>
        ....
        </td>
     
        <td>
        ....
        </td>
      </tr>
     
      <tr>
      ...
      </tr>
     
    </table> 
    <p> <span>4【ajax】 </span>  </p>
    ....
    我的疑问是关于filter过滤的使用:
    Parser parser;
    String body = "";       
    parser = new Parser("D:/0105010.htm");  
    parser.setEncoding("UTF-8");
    HtmlPage htmlpage = new HtmlPage(parser);        
    parser.visitAllNodesWith(htmlpage);        
    body = htmlpage.getBody().toHtml();   
    Parser nodesParser;
    NodeList nodeList = null;
    NodeList nodeList = null;
    nodesParser = Parser.createParser(body, "UTF-8");
    NodeFilter textFilter = new NodeClassFilter(TextNode.class);
    try{  
        nodeList = nodesParser.parse(textFilter);          
    }catch (ParserException e){
        e.printStackTrace();
    }
    下面我再转换成数组输出,但是这样会输出全部body内容,因为上面已经有了一个NodeFilter过滤,我的想法是设一个boolean 变量,加一个filter判断span,如果是【java】才做上面红色部分,遇到了比他表示数字+1【的形式,当前是3【到了4【时就停止红色部分操作,这个过滤器应该怎么加呢,我想过滤器的代码大致如下。谢谢各位了
    NodeFilter filter = new TagNameFilter("span");
    NodeList list = parser.extractAllNodesThatMatch(filter);