2014-05-01 86 views
0

有人知道我怎么可以用Jsoup提取这些文本?用jsoup从表格中提取文本

<TR> 
    <TD bgColor=#ffa55c><B> 
     The first text I want.  </B><BR> 
     <BR> 
     The second text I want  <BR> 
    </TD> 
</TR> 

我能得到的第一个具有:

Element element = doc.select("tr td:eq(1) b").get(1); 
element.text(); 

但我没有得到第二个:(

+0

什么是.get(1),我没有看到元素类型有任何方法,如get()(http://jsoup.org/apidocs/)? –

回答

1

您需要关闭您的表格单元格标签TD,使HTML良好形成

<table> 
<TR> 
    <TD bgColor=#ffa55c><B> 
     The first text I want.  </B><BR> 
     <BR> 
     </TD><TD> <!-- add this --> 
     The second text I want  <BR> 
    </TD> 
</TR> 
</table> 

否则JSoup会考虑第一个&秒电池为一体,并get将抛出IndexOutOfBoundsException,那么你可以简单的使用

Element element = doc.select("td").get(2); 
+0

我同意但不幸的是我无法更改html代码:/我需要使用这个丑陋的东西<。< –

1

使用你给我们的表中的数据,你可以很容易地得到所有的文本一举:

String html = "<TR><TD bgColor=#ffa55c><B>The first text I want.</B><BR><BR>The second text I want<BR></TD></TR>"; 

Document doc = Jsoup.parse(html); 

System.out.println("test: " + doc.text()); 

随着输出:

test: The first text I want. The second text I want 

我认为你需要限制你的选择的TR和后不顾一切,所以使它像

东西
// get the TRs 
Elements elements = doc.select("tr"); 

// iterate through the TRs 
for (Element element: elements){ 
    System.out.println(element.text());  
}