2

我正在尝试用Jsouplib 解析 html。然而,我没有得到我想要的。我想将标签的整个文本带到移动设备的屏幕上<pre>

请告诉我,我如何从网络上获取文本?我需要如何修复?

网址: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);
        }
    }

}
4

3 回答 3

0

事实上,响应没有包含在<pre>标签中。<pre>当您查看源代码时,它是在标签中包装原始响应的浏览器。

而不是doc.getElementsByTag("pre")尝试doc.getElementsByTag("body")

于 2013-08-24T21:50:54.090 回答
0

如果要显示整个页面,也可以尝试使用 Android WebView 组件。 http://developer.android.com/reference/android/webkit/WebView.html

您可以使用 URI 类轻松解析页面
Uri uri = Uri.parse("http://devanswers.ru/text.php");,然后将其显示在 WebView 中。

于 2013-08-25T00:29:58.740 回答
0

我以前从未使用过 Jsoup,但我可以从您的代码中看到,每次您从页面获取数据时,您都会在 DevMainText 中重写内容

所以你应该像这样在你的文本视图中设置文本:

String maintext = "";
   for (Element link : links) {
    maintext += link.text() +"\n";
   }
DevMainText.setText(maintext);
于 2013-08-26T08:57:09.880 回答