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が返されます。

私は何が間違っているのですか?ちなみに、サービスの他に、Webビューは同じ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よりも便利ですThread。また、空のキャッチブロックは悪い習慣です。

于 2012-09-12T11:16:59.760 に答える
0

select ステートメントが間違っています。選択文字列全体を 1 行に挿入できます。さらに、クラスであるため、「tabCount」の前にドットを付ける必要があります。

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