0

次の SO 投稿で別のユーザーが投稿した提案を試みた後、3 つのエラーが発生しました。

簡単な JSOUP の例を使用して Web サイトのテーブル データを解析できない

JSoup を使用して何かを構築するのは初めてなので、ヒントやコツ、または知っておくべきことは大歓迎です。

エラー:

Type mismatch: cannot convert from Elements to Element  
The method select(String) in the type Element is not applicable for the arguments (Element)
tr cannot be resolved to a variable 

ソース:

package com.example.test;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {

    TextView tv;
    final String URL = "http://exampleurl.com";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv = (TextView) findViewById(R.id.TextView01);
        new MyTask().execute(URL);
    }

    private class MyTask extends AsyncTask<String, Void, String> {
        ProgressDialog prog;
        String title = "";

        @Override
        protected void onPreExecute() {
            prog = new ProgressDialog(MainActivity.this);
            prog.setMessage("Loading....");
            prog.show();
        }

        @Override
        protected String doInBackground(String... params) {
            try {
                Document doc = Jsoup.connect(params[0]).get();
                Element tableElement = doc.select(".datagrid");
                Element th = doc.select(tr).first;
                Element firstTh = th.select(th).first();
                title = firstTh.text();
        }  catch (IOException e) {
                e.printStackTrace();
            }
            return title;
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            prog.dismiss();
            tv.setText(result);
        }
    }
}

リビジョン 1:

public class MainActivity extends Activity {

    TextView tv;
    final String URL = "http://exampleurl.com";
String tr;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv = (TextView) findViewById(R.id.TextView01);
        new MyTask().execute(URL);
    }

    private class MyTask extends AsyncTask<String, Void, String> {
        ProgressDialog prog;
        String title = "";

        @Override
        protected void onPreExecute() {
            prog = new ProgressDialog(MainActivity.this);
            prog.setMessage("Loading....");
            prog.show();
        }

        @Override
        protected String doInBackground(String... params) {
            try {
                Document doc = Jsoup.connect(params[0]).get();
                Elements tableElement = doc.select(".datagrid");
           //     Elements th = doc.select(tr).first;
                Elements th = doc.select(".attribute").first();
                title = firstTh.text();
        }  catch (IOException e) {
                e.printStackTrace();
            }
            return title;
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            prog.dismiss();
            tv.setText(result);
        }
    }
}
4

1 に答える 1

0

javadoc に従って、ではなくオブジェクトをselect返します。ElementsElement

Elements tableElement = doc.select(".datagrid");

selectStringElement ではなくリテラルを受け入れるためString、パラメーターとして a が必要です。また、メソッドには括弧が必要です。メソッドと同様firstに、括弧が必要です

Element th = doc.select(".yourattributehere").first();
                             ^              ^----- add parenthesis
                             |--provide valid selector query
于 2013-10-02T16:08:05.893 に答える