<tr>
<td rowspan="2" valign="top">abc</td>
<td rowspan="2" valign="top">2013-06-20</td>
<td>Hardware</td>
<td>x86_64</td>
<td>All</td>
</tr>
<tr>
<td>OS</td>
<td>Linux</td>
<td>All</td>
</tr>
Elements NTs = doc.select("table td:eq(0)");
for (Element NT : NTS) {
System.out.println(NT.text());
}
当前输出:
abc
OS
必需输出:abc
请帮助我..
谢谢
答案 0 :(得分:0)
如果你想要第一列中的元素,第一行你可以使用一个简单的正则表达式:
String t = input;
Pattern p = Pattern.compile("[<tr><td[.]*>]{1}(\\p{Alnum}*)</td>");
Matcher m = p.matcher(t);
String ris = "";
if (m.find())
ris = m.group(1);
答案 1 :(得分:0)
如果您正在使用Jsoup,则无需像其他答案中所建议的那样使用正则表达式。首先获取表的行,然后为每行获取第一列,然后获取文本。这是一个简单的例子,假设您有一个表格,其中包含您示例中的数据。
Elements rows = doc.select("tr");
for (Element row : rows) {
// Get the first column for the row
Element col = row.select("td").get(0);
// Get the text for the element
String text = col.text();
System.out.println(text);
}
实施例
<table>
<tr>
<td rowspan="2" valign="top">abc</td>
<td rowspan="2" valign="top">2013-06-20 </td>
<td>Hardware</td>
<td>x86_64</td>
<td>All</td>
</tr>
<tr>
<td>OS</td>
<td>Linux</td>
<td>All</td>
</tr>
</table>
我不知道你为什么只期望获得abc