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

파싱하기,,,,,초보입니다 질문부탁드립니다.

0 추천

지금 기사를 파싱중인데

 

값은 넘어오는거 같은데 출력이 안됩니다.

 

초보라서 질문드립니다.

 

답변부탁드립니다..ㅜ

 

package com.rss;

import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

public class RSS_TestActivity extends Activity {

	/*
	 * @author 프리돔
	 * 
	 * @website http://onedays.co.kr 일단 안드로이드 메니페스트 파일에서 퍼미션을 추가해주세요.( 본프로젝트는
	 * 추가되어져 있습니다!)
	 */
	private ArrayList<HashMap<String, String>> list_board = new ArrayList<HashMap<String, String>>();
	private HashMap<String, String> map;
	private SimpleAdapter sa;
	private ArrayList<String> contents;

	 private String baseballURL =
	"http://www.chosun.com/site/data/rss/baseball.xml";
	//private String url = "http://www.dsu.ac.kr/V6/nbd060200/rss";

	static final int PROGRESS_DIALOG = 0;

	private ListView lv;
	private TextView status;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		status = (TextView) findViewById(R.id.textView1);
		lv = (ListView) findViewById(R.id.listView1);

		sa = new SimpleAdapter(this, list_board, R.layout.row_board,
				new String[] { "subject", "date", "writer" },
				new int[] { R.id.board_subject, R.id.board_date,
						R.id.board_writer });
		lv.setAdapter(sa);

		contents = new ArrayList<String>();
	
		rssParse(baseballURL);

	}

	// 데이터가지고 오기
	private void rssParse(String url) {
		list_board.clear();

		try {
			URL text = new URL(url);

			XmlPullParserFactory parserCreator = XmlPullParserFactory
					.newInstance();
			XmlPullParser parser = parserCreator.newPullParser();

			parser.setInput(text.openStream(), null);

			status.setText("파싱중...");

			int parserEvent = parser.getEventType();
			String tag = "";

			boolean inTitle = false; // 제목여부판단
			boolean inItem = false; // 아이템변경 판단
			boolean inWriter = false; // 작성자 판단
			boolean inDate = false; // 작성일
			boolean inContent = false; // 내용

			// XML 날짜 형식 변환하기
			SimpleDateFormat sdf = new SimpleDateFormat(
					"yyyy년 MM월 dd일 HH시 mm분 ss초");
			Date pubdate = null;

			int count = 0;

			contents.clear(); // 가지고 있던 콘텐츠를 모두 삭제함

			do {
				Log.i("test", "" + count);
				switch (parserEvent) {
				case XmlPullParser.TEXT:
					tag = parser.getName();

					// 제목

					if (inItem && inTitle) {
						map.put("subject", parser.getText());

					}
					// 작성일
					if (inItem && inDate) {
						pubdate = new Date(Date.parse(parser.getText()));
						map.put("date", sdf.format(pubdate));
					}
					// 작성자
					if (inItem && inWriter) {
						map.put("writer", parser.getText());
					}
					// 내용
					if (inItem && inContent) {
						// map.put("content", parser.getText());
						contents.add(parser.getText());
					}
					break;
					
					/*
					 *제목여부판단 boolean inTitle = false; 
					 *아이템변경 판단   boolean inItem = false
					 *작성자 판단  boolean inWriter = false; 
					 *작성일  boolean inDate = false; 
					 *내용 boolean inContent = false;
					 * 
					 */	
				case XmlPullParser.END_TAG:
					tag = parser.getName();
					// 태그가 끝나면
					if (tag.compareTo("item") == 0) {
						inItem = false;
						list_board.add(map);
					}
					if (tag.compareTo("title") == 0) {
						inTitle = false;
					}
					if (tag.compareTo("description") == 0) {
						inContent = false;
					}
					if (tag.compareTo("dc:date") == 0
							|| tag.compareTo("date") == 0) {
						inDate = false;
					}
					if (tag.compareTo("dc:creator") == 0
							|| tag.compareTo("author") == 0) {
						inWriter = false;
					}
					
					
					break;
					
					/*
					 * item=item
					 * description
					 * author
					 * category
					 */
				case XmlPullParser.START_TAG:
					tag = parser.getName();
					// 만약 item으로 시작하는 태그라면
					if (tag.compareTo("item") == 0) {
						inItem = true;
						map = new HashMap<String, String>();
					}
					// 만약 title 로 시작하는 태그라면
					if (tag.compareTo("title") == 0) {
						inTitle = true;
					}
					if (tag.compareTo("description") == 0) {
						inContent = true;
					}
					if (tag.compareTo("dc:date") == 0
							|| tag.compareTo("date") == 0) {
						inDate = true;
					}
					// 만약 dc:creator 이거나 author 태그라면
					if (tag.compareTo("dc:creator") == 0
							|| tag.compareTo("author") == 0) {
						inWriter = true;
					}
					// 만약 pubDate 태그라면
					
					// 만약 description 태그라면
					
					break;
				}

				status.setText("파싱중: " + String.valueOf(count));
				parserEvent = parser.next();
				count++;

			} while (parserEvent != XmlPullParser.END_DOCUMENT);

			status.setText("파싱 끝");
			sa.notifyDataSetChanged();

		} catch (Exception e) {
		}
	}
}

 

echo12 (180 포인트) 님이 2013년 10월 5일 질문

답변 달기

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