Jsoup解析与Android
问题描述:
我想解析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);
}
}
}
答
我从来没有使用Jsoup之前,但我可以从你的代码中看到,您在每次从页面获取数据的时间写的东西在DevMainText
,所以你应该在你的TextView这样的setText:
答
逸岸的响应不裹在<pre>
标签。其浏览器在查看源代码时将原始响应封装在<pre>
标记中。
而不是doc.getElementsByTag("pre")
尝试doc.getElementsByTag("body")
答
您也可以尝试使用Android的WebView组件,如果你想显示整个页面。 http://developer.android.com/reference/android/webkit/WebView.html
您可以使用URI类Uri uri = Uri.parse("http://devanswers.ru/text.php");
简单地分析,网页,然后在网页视图显示此。