2011-10-23 3 views
0

を使用してHTMLページを解析しようすると、コードはこれまでのところ、私がしようとしていますが、それは私にエラーを示している。アンドロイド:困り、ここでJSoupパーサ

URL url = null; 
try { 
    url = new URL("http://wap.nastabuss.se/its4wap/QueryForm.aspx?hpl=Teleborg+C+(V%C3%A4xj%C3%B6)"); 
} catch (MalformedURLException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
System.out.println("1"); 
Document doc = null; 
try { 
    System.out.println("2"); 
    doc = Jsoup.parse(url, 3000); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
System.out.println("3"); 
Element table = doc.select("table[title=Avgångar:]").first(); 
System.out.println("4"); 
Iterator<Element> it = table.select("td").iterator(); 

//we know the third td element is where we wanna start so we call .next twice 
it.next(); 
it.next(); 
while(it.hasNext()){ 
    // do what ever you want with the td element here 
System.out.println(it.next()); 
    //iterate three times to get to the next td you want. checking after the first 
    // one to make sure 
    // we're not at the end of the table. 
    it.next(); 
    if(!it.hasNext()){ 
    break; 
    } 
    it.next(); 
    it.next(); 
} 

それが停止し、その後System.out.println("3");

を印刷しますこの行の私は、この問題を解決するにはどうすればよい

Element table = doc.select("table[title=Avgångar:]").first();

ありがとう

+0

何が最悪なのですか何かを印刷することさえできません。何かを印刷するのに誰かが助けてくれたら、私は本当に感謝します。 –

+0

あなたは何を得ているのですか? –

+0

私はそれがこの行System.out.println( "3")まで行くと言いました。その後、それは固まって、logcatでjava.lang.nullpointerexceptionと言う。 私の質問はこれですか?JSoupはアンドロイドでもうまくいきますか? –

答えて

1

HTMLを解析しようとしているWebサイトにエラーがあり、その上にテーブルがないようです。これがヌルポインタ例外の原因です。 doc.select("table[title=Avgångar:]")は要素を返していないので、その上でメソッドを呼び出そうとしています。再び起きてからこのエラーを回避するには、このような何かを行うことができます:任意のテーブルが見つかった場合

Elements foundTables = doc.select("table[title=Avgångar:]"); 
Element table = null; 
if(!foundTables.isEmpty()){ 
    table = tables.first(); 
} 

table変数はNULLにすることはできません。テーブルが見つからない場合に適応するようにコードを変更するだけで済みます。

+0

あなたは正しいKurtisです。今度は大学に来るバスはありません:P、遅すぎ、ウェブサイトが生成していますテーブルが自動的に作成されます。 私は後でそれを試してみるか、他のサイトと一緒にお試しになります btwさんからのサポートのおかげで、本当に役に立ちます。 –

+0

私はこのサイトhttp://www.nseindia.com/content/equities/niftysparks.htmを試して、Element table = doc.select( "table [class = niftyd]")に変更しました。 イテレータ it = table.select( "td [width = 65]")。iterator(); まだ同じ問題:S –

+0

少なくとも私はここに何か問題があるはずはありません:P、これはuのために働いていますか?私の間違いはどこにあるのだろうか? –

0

.first()に電話する前にdoc.select()の結果を確認していません。ドキュメント内に指定されたクエリに一致する要素がない場合、doc.select()はnullを返す可能性があります。次に、NULLポインタ上で.first()を呼び出すと、もちろん例外がスローされます。あなたの例で使用している文書で指定したタイトルのtableタグはありません。だから結果は驚くべきことではありません。

+0

私はdoc.select()を呼び出そうとしました。最初はまだいくつかのエラーが出ます。問題が何であるか正確に教えてください。もしあなたが私にいくつかのコードを書いてくれたら、それは私に多くの助けになるでしょう。 –

関連する問題