String html="<table width=/"200/" border=/"1/">
<tr>
<td>text</td>
<td> aaaa</td>
</tr>
<tr>
<td>text2</td>
<td> aaaa</td>
</tr>
<tr>
<td>text3</td>
<td> aaaa</td>
</tr>
<tr>
<td>text4</td>
<td> aaaa</td>
</tr>
<tr>
<td>text5</td>
<td> aaaa</td>
</tr>
<tr>
<td>text6</td>
<td> aaaa</td>
</tr>
</table>";
现在要把每行的第一列里的内容和第二列的内容以hashtable的key和value形式提取出来,具体怎么写?...现在似乎没有思路..最后应该是返回个List容器,里面放的都是hashtable,其中key是每行第一列的内容,如"text",value是第二列的内容,如" aaa"
<tr>
<td>text</td>
<td> aaaa</td>
</tr>
<tr>
<td>text2</td>
<td> aaaa</td>
</tr>
<tr>
<td>text3</td>
<td> aaaa</td>
</tr>
<tr>
<td>text4</td>
<td> aaaa</td>
</tr>
<tr>
<td>text5</td>
<td> aaaa</td>
</tr>
<tr>
<td>text6</td>
<td> aaaa</td>
</tr>
</table>";
现在要把每行的第一列里的内容和第二列的内容以hashtable的key和value形式提取出来,具体怎么写?...现在似乎没有思路..最后应该是返回个List容器,里面放的都是hashtable,其中key是每行第一列的内容,如"text",value是第二列的内容,如" aaa"
htmlBuffer.append("");
htmlBuffer.append("<table width=\"200\" border=\"1\">");
htmlBuffer.append(" <tr>");
htmlBuffer.append(" <td>text</td>");
htmlBuffer.append(" <td> aaaa</td>");
htmlBuffer.append(" </tr>");
htmlBuffer.append(" <tr>");
htmlBuffer.append(" <td>text2</td>");
htmlBuffer.append(" <td> bbbb</td>");
htmlBuffer.append(" </tr>");
htmlBuffer.append(" <tr>");
htmlBuffer.append(" <td>text3</td>");
htmlBuffer.append(" <td> cccc</td>");
htmlBuffer.append(" </tr>");
htmlBuffer.append(" <tr>");
htmlBuffer.append(" <td>text4</td>");
htmlBuffer.append(" <td> dddd</td>");
htmlBuffer.append(" </tr>");
htmlBuffer.append(" <tr>");
htmlBuffer.append(" <td>text5</td>");
htmlBuffer.append(" <td> eeee</td>");
htmlBuffer.append(" </tr>");
htmlBuffer.append(" <tr>");
htmlBuffer.append(" <td>text6</td>");
htmlBuffer.append(" <td> ffff</td>");
htmlBuffer.append(" </tr>");
htmlBuffer.append("</table>");
String strHtml = htmlBuffer.toString();
ArrayList result = new ArrayList();
while(strHtml.indexOf("<td>") > -1) {
String[] items = new String[2];
int start = strHtml.indexOf("<td>") + 4;
int end = strHtml.indexOf("</td>");
items[0] = strHtml.substring(start, end);
strHtml = strHtml.substring(end + 4);
start = strHtml.indexOf("<td>") + 4;
end = strHtml.indexOf("</td>");
items[1] = strHtml.substring(start, end);
result.add(items);
strHtml = strHtml.substring(end + 4);
} for (int i = 0; i < result.size(); i++) {
System.out.println(((String[])result.get(i))[0] + " " +
((String[])result.get(i))[1]);
}结果输出:
text aaaa
text2 bbbb
text3 cccc
text4 dddd
text5 eeee
text6 ffff
<tr>
<td>text</td>
<td colspan="2"> aaaa</td>
</tr>
<tr>
<td>text2</td>
<td> aaaa</td>
<td> aaaa</td>
</tr>
<tr>
<td>text3</td>
<td colspan="2"> aaaa</td>
</tr>
<tr>
<td>text4</td>
<td colspan="2"> aaaa</td>
</tr>
<tr>
<td>text5</td>
<td colspan="2"> aaaa</td>
</tr>
<tr>
<td>text6</td>
<td colspan="2"> aaaa</td>
</tr>
</table>有的行是3列的我实际上要把每行第2列以后的所有内容都提取出来作为value,并且要包括<td></td>这些标签,每行第1列倒是直接提取内容...这样的话楼上那程序可能就不适用了...
htmlBuffer.append("");
htmlBuffer.append("<table width=\"200\" border=\"1\">");
htmlBuffer.append(" <tr>");
htmlBuffer.append(" <td>text</td>");
htmlBuffer.append(" <td colspan=\"2\"> aaaa</td>");
htmlBuffer.append(" </tr>");
htmlBuffer.append(" <tr>");
htmlBuffer.append(" <td>text2</td>");
htmlBuffer.append(" <td> bbbb</td>");
htmlBuffer.append(" <td> aaaa</td>");
htmlBuffer.append(" </tr>");
htmlBuffer.append(" <tr>");
htmlBuffer.append(" <td>text3</td>");
htmlBuffer.append(" <td> cccc</td>");
htmlBuffer.append(" <td colspan=\"2\"> aaaa</td>");
htmlBuffer.append(" </tr>");
htmlBuffer.append(" <tr>");
htmlBuffer.append(" <td>text4</td>");
htmlBuffer.append(" <td colspan=\"2\"> dddd</td>");
htmlBuffer.append(" <td colspan=\"2\"> aaaa</td>");
htmlBuffer.append(" </tr>");
htmlBuffer.append(" <tr>");
htmlBuffer.append(" <td>text5</td>");
htmlBuffer.append(" <td> eeee</td>");
htmlBuffer.append(" <td colspan=\"2\"> aaaa</td>");
htmlBuffer.append(" </tr>");
htmlBuffer.append(" <tr>");
htmlBuffer.append(" <td>text6</td>");
htmlBuffer.append(" <td colspan=\"2\"> ffff</td>");
htmlBuffer.append(" <td colspan=\"2\"> aaaa</td>");
htmlBuffer.append(" </tr>");
htmlBuffer.append("</table>");
String strHtml = htmlBuffer.toString();
ArrayList result = new ArrayList();
String strOperation = null;
int trStart = strHtml.indexOf("<tr>");
String value = null;
while(trStart > -1) {
int trEnd = strHtml.indexOf("</tr>");
strOperation = strHtml.substring(trStart, trEnd + 5);
String[] items = new String[2];
int start = strOperation.indexOf("<td>") + 4;
int end = strOperation.indexOf("</td>");
items[0] = strOperation.substring(start, end);
strOperation = strOperation.substring(end + 5);
value = "";
while (strOperation.indexOf("<td") > -1) {
start = strOperation.indexOf("<td");
end = strOperation.indexOf("</td>");
value = value + strOperation.substring(start, end + 5);
strOperation = strOperation.substring(end + 5);
}
items[1] = value;
result.add(items);
strHtml = strHtml.substring(trEnd + 5);
trStart = strHtml.indexOf("<tr>");
} for (int i = 0; i < result.size(); i++) {
System.out.println(((String[])result.get(i))[0] + " " +
((String[])result.get(i))[1]);
}//输出结果如下:
text <td colspan="2"> aaaa</td>
text2 <td> bbbb</td><td> aaaa</td>
text3 <td> cccc</td><td colspan="2"> aaaa</td>
text4 <td colspan="2"> dddd</td><td colspan="2"> aaaa</td>
text5 <td> eeee</td><td colspan="2"> aaaa</td>
text6 <td colspan="2"> ffff</td><td colspan="2"> aaaa</td>
<tr>
<td>text</td>
<td colspan="2"> aaaa</td>
</tr>
<tr>
<td>text2</td>
<td><table><tr><td> aaaa</td></tr><tr><td> aaaa</td></tr></table></td>
<td> aaaa</td>
</tr>
<tr>
<td>text3</td>
<td colspan="2"> aaaa</td>
</tr>
<tr>
<td>text4</td>
<td colspan="2"> aaaa</td>
</tr>
<tr>
<td>text5</td>
<td colspan="2"> aaaa</td>
</tr>
<tr>
<td>text6</td>
<td colspan="2"> aaaa</td>
</tr>
</table>