2011-04-13 70 views
1

在下面的代码片段:Jsoup Element.text()是间歇性的?

String linkHref = ""; 
    String linkText = ""; 
    Elements links = div.getElementsByTag("a"); 
    for (Element link : links) { 
    linkHref = link.attr("href"); 
    linkText += link.text();    
    break; 
    }   

LINKTEXT有时是空的,即使我可以清楚地看到web视图链接文本有

另一方面,linkHref总是以正确的值结束。

什么可能解释这种看似间歇的行为?

这是Jsoup中的错误吗?我可能错过的其他东西?

更新,回答下面@ BalusC的问题:Jsoup版本是jsoup-1.5.2和div.html()说:

<div class="d2 dl"> 
<a href="nextp.html" class="cO"><img src="images/no001.jpg" alt="" vspace="0" width="69" border="0" height="69" hspace="0" /></a> 
<span class="bc">2.</span> 
<a accesskey="2" href="nextp.html"> Subject line </a> 
</div> 
<p class="aG">Human resource policies are viewed as a valuable to understand the companies.</p> 
<div> 
</div> 
+0

什么URL?什么Jsoup版本? 'div.html()'说什么? – BalusC 2011-04-13 20:32:05

+1

为什么'break'指令?为什么不直接使用'links [0]'? – manji 2011-04-13 22:08:29

+1

@manji尼斯观察(+1)。你确定这两种形式是100%相等的吗? – 2011-04-14 03:25:40

回答

2

第一个链接不包含文本的所有。它包含一个图像。所以Jsoup完美地完成了它的工作。

您可能首先要利用Element#hasText()来检查链接是否有文本。

if (link.hasText()) { 
    linkText += link.text(); 
} 
+1

我最终通过用** links = div.select(“a [accesskey]”)替换** links = div.getElementsByTag(“a”); **来解决问题; ** Thanks + 1提示div。 html()作为一个调试工具。 – 2011-04-14 03:24:05