更改网站Jsoup在if语句中解析

时间:2013-03-24 20:45:09

标签: java android jsoup

全部 - 我根据用户在微调器中选择的内容解析来自21个不同地址的数据。例如,如果用户选择“Eldora”,则应解析的网站为http://www.coloradoski.com/resorts/eldora。但如果他们选择“铜”应该从http://www.coloradoski.com/resorts/copper解析。问题是,只有地址改变,而不是实际的标签。所以,我可以将所有内容复制到21个不同的类中,只需更改地址,但似乎应该有一种方法可以根据用户选择而不是实际标签来更改地址。这是我的代码:

class AddStringTask extends AsyncTask<Void, String, Void> {  
    ProgressDialog progressDialog;
    @Override
    protected void onPreExecute()
    {
        progressDialog= ProgressDialog.show(MainActivity.this, "Loading Data","Getting from http://eldora.com/", true);

        //do initialization of required objects objects here                
    };      
    @Override
    protected Void doInBackground(Void... unused) {
        org.jsoup.nodes.Document doc = null;
        try {
            doc = Jsoup.connect("http://www.coloradoski.com/resorts/eldora").get();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        docTitle = doc.select("div#column-narrow.grid_310.alpha h1").first().text();
        AnnualSnowfallString = doc.select("dl#mountain-stats dt + dd").first().text();

        AreaString = doc.select("dl#mountain-stats dt + dd + dt + dd ").first().text();
        BaseElevationString = doc.select("dl#mountain-stats dt + dd +dt + dd + dt + dd").first().text();
        SummitElevationString = doc.select("dl#mountain-stats dt + dd + dt + dd + dt + dd + dt + dd").first().text();
        HoursofOperationString = doc.select("dl#mountain-stats dt + dd + dt + dd + dt + dd + dt + dd + dt + dd").first().text();
        SeasonDatesString = doc.select("dl#mountain-stats dt + dd + dt + dd + dt + dd + dt + dd + dt + dd + dt + dd").first().text();
        NotesString = doc.select("dl#mountain-stats dt + dd + dt + dd + dt + dd + dt + dd + dt + dd + dt + dd + dt + dd").first().text();
        return null;        
    }

dl#mountain-stats dt + dd + dt + dd不会因站点而异,只是地址。关于如何仅根据用户选择进行更改的任何想法?

1 个答案:

答案 0 :(得分:0)

您可以将参数发送到AsyncTask。改变你的:

class AddStringTask extends AsyncTask<Void, String, Void> { 

class AddStringTask extends AsyncTask<String, String, Void> { 

现在您可以将参数发送到AsyncTask的{​​{1}}函数,如下所示:

doInBackground()

在您的new AddStringTask().execute(STRING_THAT_USER_SELECTED) 函数中,您可以使用

获取传递的字符串
doInBackground()

String passedString = unused[0] 变量下,定义另一个变量,如progressDialog

String url

在将传递的字符串传递给asynctask之后,将class AddStringTask extends AsyncTask<String, String, Void> { ProgressDialog progressDialog; String url ="http://www.coloradoski.com/resorts/"; 附加到传递的字符串并调用url函数。

Jsoup's connect()

希望这有帮助