有如下代码段:
       ........
            <tr>
              <th>aaa</th>
              <td>bbb</td>
            </tr>
       ........
            <tr>
              <th>ccc</th>
              <td>ddd</td>
            </tr>
       ........页面中有多组如上格式的代码段,希望分别提取aaa,bbb,ccc,ddd等等,输出的时候格式为aaa:bbb,ccc:ddd等等有两种方法:1.NodeFilter filter1 = new AndFilter(new TagNameFilter("tr"), new HasChildFilter(new TagNameFilter("th")));
NodeFilter filter2 = new AndFilter(new TagNameFilter("tr"), new HasChildFilter(new TagNameFilter("td")));
分别提取然后依次按格式输出2.NodeFilter attribute_filter = new AndFilter(new TagNameFilter("tr"), new HasChildFilter(new AndFilter(new TagNameFilter("th"), new TagNameFilter("td"))));
一次提取出然后再处理请问对于要求的格式的输出方式哪种方法比较好处理?
再请问两种方法各自的提取文本内容(内容为中文字)的方法是怎么样的?网上查到了很多方法但不知道到底哪个行的,试来试去反而糊涂了...请教了

解决方案 »

  1.   

    刚有点小突破了Parser parser = new Parser(html);NodeList nodeList = parser.parse(value_filter);
       
    Node[] nodes = nodeList.toNodeArray();   
                  
    for (int i = 0; i < nodes.length; i++) {   
       String line = nodes[i].toPlainTextString();
       System.out.println(line);   
    }可以提取文字了,用的是我上面说的第一种方法过滤节点的,原来得到的还是tr的父节点,输出的东西是如aaa(换行)bbb,ccc(换行)ddd等格式的,请问这种情况下的话怎么获取两个不同的子节点啊?继续请教了,顺便帮自己顶顶
      

  2.   

    假如你这个页面的名字为151_1.Html,
    import java.net.*;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    import java.io.*;
    public class c
    {
      public static void main(String[] args)
       {
        try 
        {
            String ur="file:///g:/151_1.Html"; 
            URL MyURL=new URL(ur);
            String str;
            URLConnection con=MyURL.openConnection();
            InputStreamReader ins=new InputStreamReader(con.getInputStream(),"gbk");
            BufferedReader in=new  BufferedReader(ins);
            StringBuffer sb = new StringBuffer();
            while ((str=in.readLine())!=null)
            {  
             sb.append(str);
            }
                in.close();
     Pattern p = Pattern.compile("<th>(.*?)</th>.*?<td>(.*?)</td>");
         Matcher m  = p.matcher(sb.toString());
         m.matches();
    while(m.find())
    {
      System.out.print(" "+m.group(1));
      System.out.print(":"+m.group(2)+",");
        }
         }
        catch (MalformedURLException mfURLe) {
          System.out.println("MalformedURLException: " + mfURLe);
        } 
        catch (IOException ioe) {
          System.out.println("IOException: " + ioe);
      
        }
      }
    }
      

  3.   

    感谢wang8118的提示,要求已经达到了! ojz