当我碰到这个时,只是玩一下并从网站上拉出一些数据进行操作:
String request = "http://foo";
String data = "bar";
Connection.Response res = Jsoup.connect(request).data(data).method(Method.POST).execute();
Document doc = res.parse();
Elements all = doc.select("td");
for(Element elem : all){
String test = elem.text();
if(test.equals(" ")){
//redefine test to 0 and print it
}
else{
//print it
}
相关网站的编码如下:
<td align="center">Henry</td>
<td>23</td>
<td align="center">Savannah</td>
<td>15</td></tr>
...
<td align="center"> </td>
<td> </td>
<td align="center">Jane</td>
<td>15</td></tr>
在我的for循环中,test
永远不会重新定义。
我在Eclipse中调试过,String test
显示为:
修改
调试测试图表(0):
org.jsoup.nodes.Element.text()
说“返回未编码的文本,如果没有则返回空字符串”。我假设未编码的部分与此有关,但我无法弄明白。
我开了一个测试程序:
public static void main(String[] args) {
String str = " ";
if (str.equals(" ")){
System.out.println("True");
}
}
然后返回true。
是什么给出了?
答案 0 :(得分:3)
我不知道您是否控制在响应正文中发送的HTML,或者您是否在浏览器的源页面或其他地方看到的
<td> </td>
但实际内容可能是
<td> </td> // or  
其中 
是non-breaking space的HTML实体。
在java中,您可以将其表示为
char nbsp = 160;
因此,您可以检查两个char
值,一个用于空间,另一个用于不间断空格。
请注意,可能还有其他代码点表示为空格。你需要知道你在寻找什么。