마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

파싱사용에서 쓰레드오류입니다

0 추천
package com.example.html2rss;
 
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
 
import net.htmlparser.jericho.Element;
import net.htmlparser.jericho.HTMLElementName;
import net.htmlparser.jericho.Source;
import net.htmlparser.jericho.TextExtractor;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
 
public class MainActivity extends Activity {
 
TextView textView;  // 제목을 표시해줄 텍스트뷰
private static Thread thread = null;
String parsing_url;  // 파싱해오고자 하는 URL
String get_data;  // 파싱해서 가져온 데이터를 저장할 스트링 변수
ArrayList<String> array;  // get_data 변수의 값을 순차적으로 저장할 배열
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        textView = (TextView)findViewById(R.id.textView1);
 
Runnable task = new Runnable(){
 
public void run(){
 
try{
Thread.sleep(1000);
getData(parsing_url);
}
catch(InterruptedException e)
{
 
}
}};
 
thread = new Thread(task);
thread.start();  // 반드시 쓰레드를 해줘야함 그 이유는 아래에서 설명
 
try{
thread.join();  // 쓰레드 작업 끝날때까지 다른 작업들은 대기
}catch(Exception e){
 
}
 
for(int i = 0; i < array.size(); i++){
textView.append(array.get(i) + "\n");  // 쓰레드 작업 끝나면 텍스트뷰에 가져온 데이터를 입력
}
}
    
    // 파싱 작업을 하는 메서드
    public ArrayList<String> getData(String strURL){
    Source source;
    get_data = "";
    array = new ArrayList();
    try{
    URL url = new URL(strURL);
    source = new Source(url);  // 쓰레드를 사용 안하면 여기에서 예외 발생함 그 이유는 아래에서 설명
    Element element = null;
   
    List<Element> list = source.getAllElements(HTMLElementName.TITLE); // title 태그의 엘리먼트 가져옴
   
    for(int i = 0; i < list.size(); i++){
    element = list.get(i);
    String attributevalue = element.getAttributeValue("type");  // title 태그의 속성값이 type을 찾는다
    if(attributevalue != null){
    if(attributevalue.equalsIgnoreCase("text")){  // type의 값이 text 이면
    TextExtractor textExtractor = element.getTextExtractor();  // 해당 문자값을 가져온다
    get_data = textExtractor.toString();  // 가져온 값을 스트링으로 변환후
    array.add(get_data);  // ArrayList에 추가한다
    }
    }
    }
    }catch(Exception e){
   
    }
    return array;  // 입력된 배열값을 리턴
    }}
 
 
 
 
 
무엇이 잘못됬는지 모르겠습니다 오류는 쓰레드쪽에서 일어나는데 파싱도 처음하는거라 무엇이 문제인지 알려주시면
감사하겠습니다~ ㅜㅜ
GeonH (120 포인트) 님이 2014년 9월 26일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...