안녕하세요 xmlpullparser를 이용하여 데이터를 받아오는데 궁금한게 있어서 여쭈어 봅니다.
현재 서버로 부터 xml을 받으면 자료를 다음과 같이 파싱을 합니다.
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:break;
case XmlPullParser.END_DOCUMENT:break;
case XmlPullParser.START_TAG:
sTag = pr.getName();
if (sTag.equals("vector")) {
flag = true;
}
if (flag) {
if(sTag.equals("data")) {
bc = new BuyContent();
}
if(sTag.equals("PRCS_ID")) {
bc.prcsId = pr.getAttributeValue(0);
} else if (sTag.equals("PROD_USER_ID")) {
bc.produserId = pr.getAttributeValue(0);
} else if (sTag.equals("PROD_USER_NAME")) {
bc.produserName = pr.getAttributeValue(0);
} else if (sTag.equals("PROD_ID")) {
bc.prodId = pr.getAttributeValue(0);
} else if (sTag.equals("PROD_NAME")) {
bc.title = pr.getAttributeValue(0);
} else if (sTag.equals("IN_MOBILE_NO")) {
bc.inmobileNo = pr.getAttributeValue(0);
} else if (sTag.equals("PRCS_STATUS")) {
bc.prcsStatus = pr.getAttributeValue(0);
} else if (sTag.equals("REG_DATETIME")) {
bc.regDatetime = pr.getAttributeValue(0);
}
}
break;
case XmlPullParser.END_TAG:
sTag = pr.getName();
if(sTag.equals("data")) {
parseBuy.add(bc);
}
if (sTag.equals("vector")) {
flag = false;
}
break;
case XmlPullParser.TEXT:break;
}
eventType = pr.next();
}
그런데 문제는 서버와 통신을 30번 가까이 해서 xml도 30개 정도를 받는데 그때그때 파싱을 해서 정보를 보여주고 있습니다.
위의 파서를 class로 만들어서 받는데 30개의 xml에 대해서 30의 parser(class)를 만들었습니다.
그런데 이건 아무래도 아닌것 같아서 수정을 해야 할 듯 한데 문의 드립니다.
위의 sTag.equals("") 의 ""안쪽 부분만 30번의 파싱마다 조금씩 틀려지는데 이거 공통으로 뺄 방법이 없는가요?
도움 요청드립니다.