2013-08-24 44 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")