在列表中解析jsoup会得到错误的结果

时间:2014-05-12 15:20:51

标签: java android parsing android-listview jsoup

我正在解析此页面http://twixkat.altervista.org/download.html表格标签。这就是我正在做的事情:

private class SearchResult extends AsyncTask<Void, Void, String>{

String resultTextFmt;
@Override
protected void onPreExecute() {
super.onPreExecute();

mProgressDialog = new ProgressDialog(FragmentThree.this);
mProgressDialog.setTitle("Twix Updates");
mProgressDialog.setMessage("Loading...");
mProgressDialog.setIndeterminate(false);
mProgressDialog.show();
titoli = new ArrayList<String>();
descrizioni = new ArrayList<String>();
url = new ArrayList<String>();
}

@Override
protected String doInBackground(Void... params) {
try {

Document document =Jsoup.connect(URL.toString()).get();
// prendo gli elementi che mi interessano dalla tabella
Elements description2 = document.select("#rom_table");
for(Element sezione : description2)//per ogni sezione tra gli elementi ricavati prima
{
// ricavo il titolo
// (con .text() ottengo il testo non formattato
String titolo = sezione.select("tr").text();

String descrizione = sezione.select("a").text();

//-- mi prendo il link
String urldesc = sezione.select("a").first().attr("abs:href");

// inserisco nei rispettivi arraylist

titoli.add(titolo);
descrizioni.add(descrizione);
url.add(urldesc);
}
} catch (Exception e) {
e.printStackTrace();
/*Toast.makeText(FragmentThree.this, "Errore parsing",
   Toast.LENGTH_SHORT).show();*/
    Log.d("errore", "errore parsing");
}
return null;
}

@Override
protected void onPostExecute(String result) {

/*textView.setText(Html.fromHtml(resultTextFmt));*/
/*Toast.makeText(getActivity(), resultTextFmt,
   Toast.LENGTH_SHORT).show();*/
ParsingArrayAdapter adapter = new ParsingArrayAdapter(FragmentThree.this, titoli, descrizioni);
lista.setAdapter(adapter);
mProgressDialog.dismiss();  
}

}

它有效,但并不完全符合我的要求......它只给我列表中的一个项目,titolo我有所有tr标签..我想要的是两个项目列表,第一个标题为:LG Nexus 4 Alpha (04/18/2014),第二个LG Nexus 5 Alpha (04/19/2014) ...而不是现在这两个东西都在一行中。感谢

1 个答案:

答案 0 :(得分:2)

使用getElementById从已解析的rom_table中检索Document,然后按标记Elements获取tr

  final  Document doc = Jsoup.connect("http://twixkat.altervista.org/download.html").get();
      runOnUiThread(new Runnable() {
          @Override
            public void run() {
                 Element rootElement = doc.body().getElementById("rom_table");
                 Elements elements = rootElement.getElementsByTag("tr");
                 for(Element element : elements){
                     String titolo = element.select("tr").text();
                     String descrizione = element.select("a").text();
                     String urldesc = element.select("a").first().attr("abs:href");
                      // do your other stuff here to add to List
                        }
                    }
                });