안드로이드 개발 질문/답변
(글 수 45,052)
현재 RSS 파싱 해서 안펍 앱 같은 걸 만들려고 하는데요.
지금 리스트 뷰에 제목 추가하는 건 되는데 각 항목마다 링크 거는 법을 아무리 찾아봐도 나오지를 않네요..
이게 소스입니다..
아시는 분 답변 좀 부탁드립니다.
그리고 현재 제 블로그rss로 하고는 있는데..
제가 하고 싶은 rss가.
http://www.yyg.go.kr/open_content/organization/military_news/efocus/rss
이건데..
돌리면 FileExcpetion이 납니다.
혹시 파싱 하는법 아시는 분 좀 알려주세요...
지금 리스트 뷰에 제목 추가하는 건 되는데 각 항목마다 링크 거는 법을 아무리 찾아봐도 나오지를 않네요..
package pack.ggogun.yyg;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import xmlParse.xmlParses;
import android.R.bool;
import android.R.string;
import android.app.Activity;
import android.app.TabActivity;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Html;
import android.util.Log;
import android.util.Xml;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.Toast;
public class yygnotice extends TabActivity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost tabHost = getTabHost();
TabHost.TabSpec spec;
//xmlParses xml = new xmlParses();
Log.d("PBS","go the parsing");
ArrayList<String> strs=new ArrayList<String>();
String str, url_text;
try {
//파서
URL url = new URL("http://ggogunbm.tistory.com/rss");
InputStream is = url.openConnection().getInputStream();
XmlPullParser parser = Xml.newPullParser();
parser.setInput(is, null);
//InputStream is = url.openStream();
int parserEvent = parser.getEventType();
while (true) {
int type=parser.next();
//다큐먼트시작
if (type==XmlPullParser.START_DOCUMENT) {
// str="type=START_DOCUMENT"+
// ",text="+parser.getText()+
// ",depth="+parser.getDepth() + "name : " + parser.getName();
// strs.add(str);
// Log.d("PBS",str);
}
//태그시작
else if (type==XmlPullParser.START_TAG) {
// str="type=START_TAG"+
// ",text="+parser.getText()+
// ",depth="+parser.getDepth()+ "name : " + parser.getName();
// strs.add(str);
//Log.d("PBS",str);
//속성
// str=" attribute,";
// for (int i=0;i<parser.getAttributeCount();i++) {
// str+=parser.getAttributeName(i)+"="+parser.getAttributeValue(i)+",";
// strs.add(str);
// }
if(parser.getName().equals("title") && parser.getDepth() == 4){
parser.next();
str="Title is"+
",text="+parser.getText();
Log.d("PBS",str);
strs.add(str);
}
}
//텍스트
else if (type==XmlPullParser.TEXT) {
// str="type=TEXT"+
// ",text="+parser.getText()+
// ",depth="+parser.getDepth()+ "name : " + parser.getName();
// strs.add(str);
// Log.d("PBS",str + " 1");
}
//태그종료
else if (type==XmlPullParser.END_TAG) {
// str="type=END_TAG"+
// ",text="+parser.getText()+
// ",depth="+parser.getDepth();
// strs.add(str);
//Log.d("PBS",str + " 1");
}
//다큐먼트종료
else if (type==XmlPullParser.END_DOCUMENT) {
// str="type=END_DOCUMENT"+
// ",text="+parser.getText()+
// ",depth="+parser.getDepth();
break;
}
}
} catch (Exception e) {
Log.e("PBS","error : " + e.toString());
Log.d("PBS","go the failse");
}
/*
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setValidating(false);
XmlPullParser myxml = factory.newPullParser();
InputStream raw = getApplicationContext().getAssets().open("http://www.yyg.go.kr/open_content/organization/military_news/efocus/rss");
myxml.setInput(raw, null);
int eventType = myxml.getEventType();
while(eventType != XmlPullParser.END_DOCUMENT) {
if(eventType == XmlPullParser.START_DOCUMENT) {
Log.d("PBS", "In start document");
}
else if(eventType == XmlPullParser.START_TAG) {
Log.d("PBS", "In start tag = "+myxml.getName());
}
else if(eventType == XmlPullParser.END_TAG) {
Log.d("PBS", "In end tag = "+myxml.getName());
}
else if(eventType == XmlPullParser.TEXT) {
Log.d("PBS", "Have text = "+myxml.getText());
}
eventType = myxml.next();
}
} catch (XmlPullParserException e) {
Log.d("PBS", "exception");
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d("PBS", "ioexception");
}
*/
// 첫 번째 탭
spec = tabHost.newTabSpec( "Tab 01" );
spec.setIndicator( "영양포커스",
getResources().getDrawable( R.drawable.icon ) );
spec.setContent( R.id.TabView1 );
tabHost.addTab( spec );
tabHost.getTabWidget().getChildAt(0).setBackgroundColor(Color.parseColor("#734512"));
// 탭 색 지정
ArrayList<String> listArrray = new ArrayList<String>();
listArrray.add("김유신");
listArrray.add("이순신");
listArrray.add("강감찬");
listArrray.add("을지문덕");
final ArrayAdapter<String> adapter;
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, strs);
final ListView list = (ListView) findViewById(R.id.TabView2);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView listview, View view,
int position, long id) {
// TODO Auto-generated method stub
Toast awesomeToast = Toast.makeText(yygnotice.this, adapter.getItem(position),Toast.LENGTH_SHORT);
awesomeToast.show();
}
});
// 두 번째 탭
spec = tabHost.newTabSpec( "Tab 02" );
spec.setIndicator( "자유게시판" );
spec.setContent( R.id.TabView2 );
tabHost.addTab( spec );
// 세 번째 탭
spec = tabHost.newTabSpec( "Tab 03" );
spec.setIndicator( "지역정보모니터" );
spec.setContent( R.id.TabView3 );
tabHost.addTab( spec );
tabHost.setCurrentTab( 1 );
}
}
이게 소스입니다..
아시는 분 답변 좀 부탁드립니다.
그리고 현재 제 블로그rss로 하고는 있는데..
제가 하고 싶은 rss가.
http://www.yyg.go.kr/open_content/organization/military_news/efocus/rss
이건데..
돌리면 FileExcpetion이 납니다.
혹시 파싱 하는법 아시는 분 좀 알려주세요...



