Android用JSoup解析html表

时间:2013-10-07 21:21:17

标签: android html jsoup html-table

我已经查看了堆栈溢出,我发现了以下帖子:

https://stackoverflow.com/questions/7864433/how-to-parse-the-cells-of-the-3rd-column-of-a-tablehttps://stackoverflow.com/questions/7864433/how-to-parse-the-cells-of-the-3rd-column-of-a-table

但我仍然有点困惑。

我所拥有的是一个html表,其中包含一些具有不同日期的<tbody>标记中的一些:

            <tr>
                <td>
                    <nobr>Fri</nobr>
                </td>
                <td>
                    <nobr>Sep 20</nobr>
                </td>
                <td>
                    <nobr>4:00 PM</nobr>
                </td>
                <td>
                    Practice                </td>
            </tr>

表的ID是“ gymschedule ”。

到目前为止,我可以使用JSoup获取表格,我可以使用JSoup在webview中显示它。

我需要在第二个<nobr>中获取第二个<td>的文本,并对表格中的每个其他<tr>个标记组执行此操作< /强>

1 个答案:

答案 0 :(得分:2)

我不知道原始资源看起来完全是什么,但这应该有效。

您可以使用CSS选择器选择文档中的特定标记,并使用 伪选择器 指定它们应具有的属性。

如果您只想选择多个序列中第一个的<tr> - 标记,则可以使用tr:eq(0)选择器。

在你的情况下,你会得到类似的东西:

    doc = Jsoup.parse(html, "", Parser.xmlParser());
    Elements elements = doc.select("tr td:eq(1) nobr");
    for (Element e : elements) {
        System.out.println(e.text()); 
    }

将打印出来

Sep 20

由于我不知道您的完整源代码是什么样的,您可能可以使用默认的HTML解析器Jsoup.parse(html);,但这不适用于您提供的代码段。

其他伪选择器的示例可以是

:lt(0) //Less than
:gt(0) //Greater than

我建议你阅读使用selector-syntax。

Use selector-syntax to find elements