2013-02-26 52 views
0

在我的Android应用程序内我想从外部网站接收一些表格数据。使用jSoup从Android的外部网站接收表格数据

比方说,网站页面X有这个表里面的HTML:

<table summary="Foo" border="0" bgcolor="#ffffff" cellpadding="0"> </table> 

我怎么会收到表(从上到下)的第二列的所有单元格内的字符串?

到目前为止,我所做的是以下几点:

  1. 创建AsyncTask

  2. 使用jSoup刮外部网站。

我用我的AsyncTask里面下面的代码:

ArrayList<String> list = new ArrayList<String>(); //table data 
Document document = Jsoup.connect(url).get(); 
Elements nextTurns = document.select(":contains(Foo) td:eq(1)");    
     for (Element nextTurn : nextTurns) { 
      list.add(nextTurn.text()); 
     } 

当运行它只是似乎停在document.select语句的代码和GC是疯狂。经过很长时间后,它确实通过了document.select声明,并且它确实获得了大部分数据,但它仍然具有来自网站的其他随机元素。

我敢肯定,这是完全错误的:

Elements nextTurns = document.select(":contains(Foo) td:eq(1)"); 

但我不确定如何解决它,因为该表还没有任何的ID。我发现this page混淆。

如何修复select语句和/或for循环,以便使用第二个表列中的数据填充ArrayList?

编辑:通过删除contains(Foo)它现在真的很快,所以这是1问题少。我仍然需要帮助将DOM元素遍历到表格的第二列,而不需要大量的随机部分。

回答

1

这是正确的选择,猜测根据您的文章

document.select("table[summary=Foo] tr"); 

遍历上面的列表,并获得第二<td>这是在列表的索引1。

+0

在我的情况下,我不得不使用td:eq(1),但感谢它的工作。 – 2013-02-27 17:53:30