1

我对 jsoup 很陌生。几天来,我现在试图从一个跨度中读出一个简单的数字,但没有任何成功。

我希望能在这里找到帮助。我的html:

<div class="navi">
<div class="tab mail">
<a href="/comm.php/indexNew/" accesskey="8" title="Messages">
<span class="tabCount">1 </span>
<img src="/b2/message.png" alt="Messages" class="moIcon i24" />
</a>
</div>

尽管在整个文档中,tabCount 类存在 3 次,但我对这个类的第一个跨度感兴趣。现在我正在尝试在服务的 onCreate() 中创建一个线程:

Thread downloadThread = new Thread() {                     
            public void run() {                                    
                Document doc;                                      
            try {                                              
                doc = Jsoup.connect("https://www.bla.com").get();

                    String count = doc.select("div.navi").select("div.tab.mail").select("a[href]").first().select("tabCount").text();

                Log.d("SOMETHING", "test"+(count));


            } catch (IOException e) {                          
                e.printStackTrace();                           
            }                                                  
        }                                                      
    };                                                         
    downloadThread.start(); 

这迫使我的应用程序崩溃。如果我将 text() 更改为 ownText(),也是如此。如果我删除 text() 那么应用程序可以启动,但它给了我 null。

我究竟做错了什么?顺便说一句,除了服务之外,webview 正在加载相同的 url。这可能是个问题吗?

4

3 回答 3

2

您只需要选择您感兴趣的元素,您不需要之前获取每个外部元素。在您的示例中,您可以尝试

String count = doc.select("span.tabCount").text();

在哪里定义元素“span”的类型和类名“.tabcount”

有关可能对您有所帮助的示例,请查看链接

编辑:

试试这个代码,这将得到第一个跨度的值。

Elements elements = doc.select("span.tabCount");
String count = elements.first().text();

如果你想打印所有元素,你可以这样做。

Elements elements = doc.select("span.tabCount");
for (Element e : elements) {
  Log.d("Something", e.text();
}
于 2012-09-12T11:24:22.513 回答
1

你不是说.select(".tabCount")吗?

顺便说一句,在 Android 上,AsyncTasks 比Threads 更方便。此外,空的 catch 块是一种不好的做法。

于 2012-09-12T11:16:59.760 回答
0

您的选择语句是错误的。您可以将整个选择字符串插入一行。此外,您必须在“tabCount”前面加上一个点,因为它是一个类。

String count = doc.select("div.navi div.tab.mail a").first().select(".tabCount").text();
于 2012-09-12T11:19:58.500 回答