2013-08-24 202 views
2

我想解析HTML與Jsoup lib。但是,我沒有得到我想要的。 我想給移動設備的屏幕帶上標籤的全部文本<pre>Jsoup解析與Android

請告訴我,如何從網絡獲取文本?我該如何解決?

網站:http://devanswers.ru/text.php

package com.example.devanswers; 
import java.io.IOException; 
import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 
import android.app.Activity; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

    TextView DevMainText; 
    ImageView DevMainImage; 
    MyTask DevMain; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     DevMainText = (TextView) findViewById(R.id.DevMainText); 
     DevMainImage = (ImageView) findViewById(R.id.DevMainImage); 

     OnClickListener onClick = new OnClickListener() { 
      public void onClick(View v) { 

       DevMain = new MyTask(); 
       DevMain.execute(); 
      } 
     }; 

     DevMainImage.setOnClickListener(onClick); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    class MyTask extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      DevMainImage.setEnabled(false); 
     } 

     @Override 
     protected Void doInBackground(Void... params) { 
      Document doc; 
      try { 
       doc = Jsoup.connect("http://devanswers.ru/text.php").get(); 
       Elements links = doc.getElementsByTag("pre"); 
       for (Element link : links) { 
        DevMainText.setText((link.text())); 
       } 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       DevMainText.setText("Error"); 
      } 

      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
      super.onPostExecute(result); 
      DevMainImage.setEnabled(true); 
     } 
    } 

} 

回答

0

我從來沒有使用Jsoup之前,但我可以從你的代碼中看到,您在每次從頁面獲取數據的時間寫的東西在DevMainText

,所以你應該在你的TextView這樣的setText:

​​
0

逸岸的響應不裹在<pre>標籤。其瀏覽器在查看源代碼時將原始響應封裝在<pre>標記中。

而不是doc.getElementsByTag("pre")嘗試doc.getElementsByTag("body")