왜 예외가 발생하는지 잘 모르겠습니다. 제가하려는 것은 문서의 첫 번째 설명 태그를 얻는 것입니다 ("이번 주 최고의 트랙"이 될 것입니다).XML pullparser 예외
package com.example.rssparser;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import org.xml.sax.InputSource;
import org.xmlpull.v1.XmlPullParser;
import com.example.rssparser.R;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.util.Xml;
import android.view.Menu;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try{
new Parse().execute(new URL("http://staging.satelliterecords.com/hot_picks/rss"));
}catch(MalformedURLException e){
Toast.makeText(this, "Error: Malformed URL", Toast.LENGTH_LONG).show();
}
}
@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;
}
public String parseInputSource(InputSource inputSource) throws Exception{
XmlPullParser parser = Xml.newPullParser();
parser.setInput(inputSource.getCharacterStream());
int eventType = parser.getEventType();
String description = "";
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType){
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.START_TAG:
String tagName = parser.getName();
if (tagName.equalsIgnoreCase("description")){
description = parser.nextText();
return description;
}
break;
default:
break;
}
eventType = parser.next();
}
throw new RuntimeException("No description tag found in XML document");
}
private class Parse extends AsyncTask<URL, Void, String>{
protected String doInBackground(URL...url){
try{
InputSource inputSource = new InputSource(url[0].openStream());
String result = parseInputSource(inputSource);
return result;
}catch(IOException e){
return "Error IO";
}catch(Exception e){
return "Error PullParser";
}
}
protected void onPostExecute(String result) {
TextView txt = (TextView) findViewById(R.id.helloyo);
txt.setText(result);
}
}
}
텍스트 영역에 "Error PullParser"가 출력됩니다. 나는 상대적으로 Java에 익숙하지 않으며 Android dev에 더 새로운 것입니다. 따라서 오류 처리 기술은 아마 좋지 않습니다. 또한 LogCat을 읽는 방법을 모르므로 응답이 숨겨져 있는지 확실하지 않습니다.
매니페스트 파일에 인터넷 권한이 추가되었습니다. – Aravin
네, 인터넷 사용 권한이 있습니다. –
샘플 xml 파싱이 필요합니다. – Aravin