안드로이드 개발 질문/답변
(글 수 45,052)
<?xml version="1.0" ?> - <owner>
<ownerId>1111</ownerId>
<ownerPwd>aaaa</ownerPwd>
<ownerName>컴퓨터</ownerName>
</owner1>
<ownerId>2222</ownerId>
<ownerPwd>bbbb</ownerPwd>
<ownerName>컴퓨터2</ownerName>
</owner2>
<ownerId>3333</ownerId>
<ownerPwd>cccc</ownerPwd>
<ownerName>컴퓨터3</ownerName>
</owner3>
<ownerId>4444</ownerId>
<ownerPwd>dddd</ownerPwd>
<ownerName>컴퓨터4</ownerName>
</owner4>
</owner>
이런식의 xml이 있습니다...
그리고 문제는 자바소스상에서... owner1,2,3 이 순서대로 각각의 항목을 가져와야하는데...
int eventType = parser.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) { /*case XmlPullParser.TEXT: if (id) { xmlID[0] = parser.getText(); } if (pw) { xmlPW[0] = parser.getText(); } if (name) { xmlName[0] = parser.getText(); } break;*/ case XmlPullParser.END_TAG: tag = parser.getName(); if (tag.compareTo("ownerId") == 0) { id = false; } if (tag.compareTo("ownerPwd") == 0) { pw = false; } if (tag.compareTo("ownerName") == 0) { name = false; } break; case XmlPullParser.START_TAG: tag = parser.getName();
if (tag.compareTo("ownerId") == 0) { id = true; xmlID[0] = parser.nextText(); } if (tag.compareTo("ownerPwd") == 0) { pw = true; xmlPW[0] = parser.nextText(); } if (tag.compareTo("ownerName") == 0) { name = true; xmlName[0] = parser.nextText(); } break; }
eventType = parser.next();
} Toast.makeText(POSproj.this, xmlID[0] + xmlPW[0] + xmlName[0], Toast.LENGTH_SHORT).show(); }
이런식으로 받아와서 토스트로 찍어보니 위의 xml에 있는 owner3 꺼로만 다 덮어버리네요....ㅠ
owner1,owner2,owner3 요거를 순서대로 배열의 0,1,2 인덱스에 저장하려면 어떻게 해야할까요??ㅠ
요 소스도 한 5~6번을 이래저래 바꾸어보았는데 3번째꺼로만 받아오는거빼고는 파싱하는도중 에뮬이 먹통이되어버리네요...
토스트 위에있는 parser.next() 부분을 주석처리 하면 owner1으로라도 받아올줄알았는데 아예 파싱이 안먹히네요ㅠ
while (eventType != XmlPullParser.END_DOCUMENT) {
//생략
case XmlPullParser.TEXT: {
String tag = parser.getName();
if(tag.equals("ownerId")) xmlID[i++] = parser.getText();
if(tag.equals("ownerPw")) xmlPW[i] = parser.getText();
if(tag.equals("ownerName")) xmlName[i] = parser.getText();
}
break;
//생략
}
이 전의 질문하신 스타일대로라면, 이렇게만 해줘도 되지 않을까 싶습니다.