안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요 기상철 날씨를 파싱하는 프로그램 예제를 인터넷에 있는 걸 보고 실행 해보고
제가 원하는 지역만 잘라서 출력을 해보려고 하는데요.
예를 들어 아래 그림처럼 xml 파일에서 밑줄친 부분만 출력 시키려면
소스코드를 어디를 손대야 할까요 ?
지금 까지 찾아 본 결과로는 indexOf, trim등을 사용하면 된다고 하는데,
제가 생각한 부분에서 입력해서 사용해 보니 에러가 나는군요~
밑에는 예제 소스파일 입니다.
package yis.PullParser;
//Made By Rint Ian Tta
import java.net.URL;
public class PullParserActivity extends ListActivity {
ImageView conditionImage;
TextView regionTextView;
TextView conditionTextView;
ArrayList<Weather> weather = new ArrayList<Weather>();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
///////////////////////////////////////////////////
try {
//URL 세ting..!
URL url = new URL("http://www.kma.go.kr/XML/weather/sfc_web_map.xml);
//사전준비//
XmlPullParserFactory parserFactory = XmlPullParserFactory.newInstance();
XmlPullParser parser = parserFactory.newPullParser();
parser.setInput(url.openStream(), "utf-8");
/////////////////////////////////////////////////////////////////////////
int parserEvent = parser.getEventType();
String tag="ready..!";
String stnid="";
String desc="";
String ta="";
String region="";
//int i=0;
while(parserEvent != XmlPullParser.END_DOCUMENT){
switch(parserEvent){
case XmlPullParser.START_DOCUMENT:
Log.d("parserTest", "Parser Start..!");
break;
case XmlPullParser.START_TAG:
tag = parser.getName();
if(tag.equals("local")){
stnid = parser.getAttributeValue(null, "stn_id");
desc = parser.getAttributeValue(null, "desc");
ta = parser.getAttributeValue(null, "ta");
}
break;
case XmlPullParser.TEXT:
if(tag.equals("local")){
region = parser.getText();
}
break;
case XmlPullParser.END_TAG:
if(tag.equals("local")){
Weather imsi = new Weather(region,desc,ta,stnid);
weather.add(imsi);
}
tag = "nothing";
break;
}
parserEvent = parser.next();
}
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d("parserTest","error");
}
Log.d("parserTest", weather.get(2).stnid);
Log.d("parserTest", weather.get(3).stnid);
Log.d("parserTest", weather.get(4).stnid);
setListAdapter(new CustomRow(this));
}
class CustomRow extends ArrayAdapter<Weather>{
Activity context;
public CustomRow(Activity c) {
super(c,R.layout.customcell,weather);
this.context = c;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inf=context.getLayoutInflater();
View customcell=inf.inflate(R.layout.customcell, null);
conditionImage = (ImageView)customcell.findViewById(R.id.conditionImage);
regionTextView = (TextView)customcell.findViewById(R.id.TextView03);
conditionTextView = (TextView)customcell.findViewById(R.id.TextView05);
regionTextView.setText(weather.get(position).region);
conditionTextView.setText(weather.get(position).desc);
Drawable sunnyImage = getResources().getDrawable(R.drawable.sunny);
Drawable cloudImage = getResources().getDrawable(R.drawable.cloud);
Drawable rainImage = getResources().getDrawable(R.drawable.rain);
if(weather.get(position).desc.equals("맑음")){
conditionImage.setImageDrawable(sunnyImage);
} else if(weather.get(position).desc.equals("비")){
conditionImage.setImageDrawable(rainImage);
} if(weather.get(position).desc.equals("구름조금")||weather.get(position).desc.equals("구름많음")){
conditionImage.setImageDrawable(cloudImage);
}
return customcell;
}
}
}

좀 다른얘긴데요. 이글을 보다가 관심이 가서 찾다보니 테스트로 아래의 URL을 실행해봤거든요.
기상청 RSS 부분인데요.
http://www.kma.go.kr/weather/forecast/mid-term-xml.jsp?stnId=109
이상하게도 IE9, Firefox 는 이상없이 xml이 나오는데
크롬 최신버전은 죽네요. 여러번 해봐도, xml관련 확장 프로그램 다 막고 해봐도...
다른분들도 그러는지 해봐주시겠어요?