2013-08-24 2 views
2

나는 Jsoup lib로 html을 구문 분석하려고합니다. 그러나, 나는 내가 원하는 것을 얻지 못했습니다. 모바일 장치의 화면에 태그의 전체 텍스트를 가져 오려고합니다. <pre>안드로이드와 Jsoup 구문 분석

웹에서 텍스트를 얻으려면 어떻게합니까? 어떻게 수정해야합니까?

웹 사이트 : 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에 당신이 페이지에서 데이터를 얻을 때마다 무엇을 쓰기 당신의 코드에서 무엇을 볼 수

그래서 당신이처럼 텍스트 뷰에서의 setText해야합니다

String maintext = ""; 
    for (Element link : links) { 
    maintext += link.text() +"\n"; 
    } 
DevMainText.setText(maintext); 
0

Infact는 응답이 <pre> 태그에 싸여 있지 않습니다. 소스를 볼 때 <pre> 태그의 원시 응답을 래핑하는 브라우저입니다. 대신 doc.getElementsByTag("pre")

은 전체 페이지를 표시 할 경우 당신은 또한 안드로이드 WebView를 구성 요소를 사용하여 시도 할 수 doc.getElementsByTag("body")