안드로이드 개발 질문/답변
(글 수 45,052)
private Vector getseoulcity() {
// TODO Auto-generated method stub
jdb =new AllDataBean();
XmlPullParserFactory factory;
try{
//XmlPullParserFactory생성 -url로부터 xml데이터를 담기위한 클래스
factory =XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
//xml데이터를 저장한후 이벤트 처리를 하기위한 클래스 선언
XmlPullParser xpp =factory.newPullParser();
//URL클래스를 선언하여 xml데이터의 위치를 파악
URL url =new URL(uri);
//inputstream스트림에 xml 데이터를 집어넣음
InputStream in =url.openStream();
//XmlPullParser클래스에 데이터 삽입
xpp.setInput(in,"euc-kr");
int eventType=xpp.getEventType();
while(eventType!=XmlPullParser.END_DOCUMENT)
{
if(eventType==XmlPullParser.START_TAG)
{
tag =xpp.getName();
if(tag.equals("al_resort"))
{
city = xpp.getAttributeValue(1);
}
Log.d("parser","starttag"+tag);
}
else if(eventType==XmlPullParser.TEXT)
{
if(city.equals("1")||city.equals("2")||city.equals("3")||city.equals("4")||city.equals("5")||city.equals("6")
||city.equals("7")||city.equals("8")||city.equals("9")||city.equals("10")||city.equals("11")||city.equals("12")
||city.equals("13")||city.equals("14")||city.equals("15")||city.equals("16")||city.equals("17")||city.equals("18")
||city.equals("19")||city.equals("20")||city.equals("21")||city.equals("22")||city.equals("23")||city.equals("24")||city.equals("25"))
{
if(tag.equals("Name"))
{
total+=xpp.getText();
jdb.setTitle(total);
Log.d("travel",total);
}else if(tag.equals("address")){
address += xpp.getText();
jdb.setAddress(address);
//System.out.println("address " +address);
}
else if(tag.equals("tel")){
phone+=xpp.getText();
jdb.setPhone(phone);
}
else if(tag.equals("url")){
urla+=xpp.getText();
jdb.setUrl(urla);
}
else if(tag.equals("fee")){
price+=xpp.getText();
jdb.setPrice(price);
}
else if(tag.equals("intro")){
contents+=xpp.getText();
jdb.setContents(contents);
}
}
Log.d("parser","text"+tag);
}
else if(eventType==XmlPullParser.END_TAG)
{
Log.d("parser","endtag"+tag);
tag=xpp.getName();
if(city.equals("1")||city.equals("2")||city.equals("3")||city.equals("4")||city.equals("5")||city.equals("6")
||city.equals("7")||city.equals("8")||city.equals("9")||city.equals("10")||city.equals("11")||city.equals("12")
||city.equals("13")||city.equals("14")||city.equals("15")||city.equals("16")||city.equals("17")||city.equals("18")
||city.equals("19")||city.equals("20")||city.equals("21")||city.equals("22")||city.equals("23")||city.equals("24")||city.equals("25"))
{
if(tag.equals("al_resort"))
{
vector.add(total);
jdbvector.add(jdb);
total="";
title="";
address="";
phone="";
urla="";
price="";
contents="";
jdb=new AllDataBean();
}
}
}
//다음 이벤트로 넘어가는 메소드
eventType=xpp.next();
}
}catch(Exception e){
e.printStackTrace();
}
return vector;
}
코드는 이런식이구요~
xml 형식은
// TODO Auto-generated method stub
jdb =new AllDataBean();
XmlPullParserFactory factory;
try{
//XmlPullParserFactory생성 -url로부터 xml데이터를 담기위한 클래스
factory =XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
//xml데이터를 저장한후 이벤트 처리를 하기위한 클래스 선언
XmlPullParser xpp =factory.newPullParser();
//URL클래스를 선언하여 xml데이터의 위치를 파악
URL url =new URL(uri);
//inputstream스트림에 xml 데이터를 집어넣음
InputStream in =url.openStream();
//XmlPullParser클래스에 데이터 삽입
xpp.setInput(in,"euc-kr");
int eventType=xpp.getEventType();
while(eventType!=XmlPullParser.END_DOCUMENT)
{
if(eventType==XmlPullParser.START_TAG)
{
tag =xpp.getName();
if(tag.equals("al_resort"))
{
city = xpp.getAttributeValue(1);
}
Log.d("parser","starttag"+tag);
}
else if(eventType==XmlPullParser.TEXT)
{
if(city.equals("1")||city.equals("2")||city.equals("3")||city.equals("4")||city.equals("5")||city.equals("6")
||city.equals("7")||city.equals("8")||city.equals("9")||city.equals("10")||city.equals("11")||city.equals("12")
||city.equals("13")||city.equals("14")||city.equals("15")||city.equals("16")||city.equals("17")||city.equals("18")
||city.equals("19")||city.equals("20")||city.equals("21")||city.equals("22")||city.equals("23")||city.equals("24")||city.equals("25"))
{
if(tag.equals("Name"))
{
total+=xpp.getText();
jdb.setTitle(total);
Log.d("travel",total);
}else if(tag.equals("address")){
address += xpp.getText();
jdb.setAddress(address);
//System.out.println("address " +address);
}
else if(tag.equals("tel")){
phone+=xpp.getText();
jdb.setPhone(phone);
}
else if(tag.equals("url")){
urla+=xpp.getText();
jdb.setUrl(urla);
}
else if(tag.equals("fee")){
price+=xpp.getText();
jdb.setPrice(price);
}
else if(tag.equals("intro")){
contents+=xpp.getText();
jdb.setContents(contents);
}
}
Log.d("parser","text"+tag);
}
else if(eventType==XmlPullParser.END_TAG)
{
Log.d("parser","endtag"+tag);
tag=xpp.getName();
if(city.equals("1")||city.equals("2")||city.equals("3")||city.equals("4")||city.equals("5")||city.equals("6")
||city.equals("7")||city.equals("8")||city.equals("9")||city.equals("10")||city.equals("11")||city.equals("12")
||city.equals("13")||city.equals("14")||city.equals("15")||city.equals("16")||city.equals("17")||city.equals("18")
||city.equals("19")||city.equals("20")||city.equals("21")||city.equals("22")||city.equals("23")||city.equals("24")||city.equals("25"))
{
if(tag.equals("al_resort"))
{
vector.add(total);
jdbvector.add(jdb);
total="";
title="";
address="";
phone="";
urla="";
price="";
contents="";
jdb=new AllDataBean();
}
}
}
//다음 이벤트로 넘어가는 메소드
eventType=xpp.next();
}
}catch(Exception e){
e.printStackTrace();
}
return vector;
}
코드는 이런식이구요~
xml 형식은
</intro>
</al_resort>
인데 로그캣으로 보면...
intro의 엔드테그를 못읽고 preference 태그를 읽었다고 나오는데...
왜 intro의 엔드테그를 못읽고 넘어가버려서 에러가 나는걸까요??ㅠ
아 이거떄문에 몇시간을 멍하니 보고있는지 모르겠네요 ㅠㅠ
도와주세요~~ㅠ
인데 로그캣으로 보면...
intro의 엔드테그를 못읽고 preference 태그를 읽었다고 나오는데...
왜 intro의 엔드테그를 못읽고 넘어가버려서 에러가 나는걸까요??ㅠ
아 이거떄문에 몇시간을 멍하니 보고있는지 모르겠네요 ㅠㅠ
도와주세요~~ㅠ