我从网上下载了一些网页的源码,我分析其中的一些内容,现在想问下怎么样解决下面的问题比较好.
先取<body></body>之间的内容,应该怎么样去得到会比较好.
假如页面如下
String html = "...<body><table>...<table>...</table>...<table>..<table>...</table>...</body>...";
我想把最外面的table标签(第一层table)标签放入一个数组里面应该怎么做?
假如我想取第一个table标签里面的第二层table标签,又应该怎么做?谢谢

解决方案 »

  1.   

    写错了,html应该如下
    String html = "...<body><table>...<table>...</table>...</table>..<table>...</table>...</body>...";
      

  2.   

    String temp="";
    int length=html.length();
    int first=html.indexOf("<body>");
    int last=html.indexOf("</body>");
    char ch;
    if(first>=0&&last>=0) html=html.substring(first,last);
    if(first>=0&&last<0) html=html.substring(first,length);
    if(first<0&&last>=0) html=html.substring(0,last);
    length=html.length();
    int i=0;
    boolean flag2=true;
    first=0;
    last=0;
    while(i<length)
    {
    ch=html.charAt(i);
    if(ch=='<')
    {
    if(html.substring(i,i+4).equals("<!--"))
    {
    int k=html.indexOf("-->",i+4);
    if(k>=0)  
    {
    i=k+2;
    flag2=false;
    }
    }
    last=i;
    if(last>first&&flag2) 

    temp=html.substring(first,last);
    simpleBayes(stattablename,temp,flag);
    }
    flag2=false;
    }
    if(ch=='>')
    {
    flag2=true;
    first=i+1;
    }
    i++;
    }
      

  3.   

    这是我写的一个方法,你把这一句simpleBayes(stattablename,temp,flag);去掉
      

  4.   

    int first=html.indexOf("<body>");
    int last=html.indexOf("</body>");
    这样肯定不行的,<body>里面可能还有参数,其实我最想知道的是怎么样取标签内的东西
    <body>...</body>其实也是一种标签,象读XML一样
      

  5.   

    看看我写的这个,看看对你有没有帮助if(_htmlString == null)return;
        String labelRegex = "<" + labelName + "(>|(.|\n)+?>)|</" + labelName + ">";
        Pattern pa = Pattern.compile(labelRegex, Pattern.CASE_INSENSITIVE);
        Matcher ma = pa.matcher(_htmlString);
        int labelBeginCount = 0;
        int labelEndCount = 0;
        int startLabel = 0;
        String labelStart = null;
        _labelList = new ArrayList();
        _labelName = new ArrayList();
        while(ma.find()) {
          if(!ma.group().substring(0, 2).equals("</")) {
            labelBeginCount++;
            if(labelBeginCount == 1){
              startLabel = ma.end();
              labelStart = ma.group();
            }
          } else{
            labelEndCount++;
            if(labelBeginCount == labelEndCount) {
              _labelList.add(new htmlLabel(_htmlString.substring(startLabel, ma.start())));
              _labelName.add(labelStart);
              labelBeginCount = 0;
              labelEndCount = 0;
            }
          }
        }