2013-10-02 40 views
0

試圖通過另一個用戶在下面的SO後發佈的建議之後,我的3個錯誤:在類型元素的方法選擇(字符串)不適用於參數(元)

Unable to Use Simple JSOUP Example To Parse Website Table Data

這是我第一次使用JSoup構建任何東西,所以任何提示/技巧或我應該知道的東西都非常感激。

ERRORS:

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 

SOURCE:

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); 
     } 
    } 
} 

REVISION 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); 
     } 
    } 
} 

回答

0

作爲每Javadoc中,select返回Elements對象,而不是Element

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

select接受String文字,而不是一個元素,所以String需要作爲其參數。還有方法需要括號。作爲first是一種方法 - 它需要括號

Element th = doc.select(".yourattributehere").first(); 
          ^   ^----- add parenthesis 
          |--provide valid selector query 
+0

這解決了一個錯誤(謝謝),但我仍然得到 tr不能類型解析爲一個變量 方法選擇(字符串)元素不適用於我的編譯器中的參數(元素)\t – OhNoItsAnOverflow

+0

請參閱更新............................ – Reimeus

+0

上述修訂版看起來是否正確? (我仍然得到2個錯誤) 說明\t資源\t路徑\t位置\t類型 類型不匹配:不能從元素轉換爲元件\t MainActivity.java \t /測試/ src目錄/ COM /例子/測試\t線55 \t的Java問題 firstTh無法解決\t MainActivity.java \t/test/src/com/example/test \t line 56 \t Java問題 – OhNoItsAnOverflow

相關問題