JSoup:如何解析表格第1列的单元格?

时间:2013-12-09 10:18:52

标签: java jsoup

<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

请帮助我..

谢谢

2 个答案:

答案 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