我从网上下载了一些网页的源码,我分析其中的一些内容,现在想问下怎么样解决下面的问题比较好.
先取<body></body>之间的内容,应该怎么样去得到会比较好.
假如页面如下
String html = "...<body><table>...<table>...</table>...<table>..<table>...</table>...</body>...";
我想把最外面的table标签(第一层table)标签放入一个数组里面应该怎么做?
假如我想取第一个table标签里面的第二层table标签,又应该怎么做?谢谢
先取<body></body>之间的内容,应该怎么样去得到会比较好.
假如页面如下
String html = "...<body><table>...<table>...</table>...<table>..<table>...</table>...</body>...";
我想把最外面的table标签(第一层table)标签放入一个数组里面应该怎么做?
假如我想取第一个table标签里面的第二层table标签,又应该怎么做?谢谢
String html = "...<body><table>...<table>...</table>...</table>..<table>...</table>...</body>...";
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++;
}
int last=html.indexOf("</body>");
这样肯定不行的,<body>里面可能还有参数,其实我最想知道的是怎么样取标签内的东西
<body>...</body>其实也是一种标签,象读XML一样
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;
}
}
}