마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

xmlfullparser 사용 질문입니다.

0 추천

<page>

<total> </total>
<pageSize> </pageSize>
<current> </current>
<title>
</title>
<link>
<web>
</web>
<mobile>
</mobile>
<api>
</api>
</link>
<item>
<number> </number>
<title>
</title>
<author>
<name>
</name>
<icon>
</icon>
</author>
<pubDate></pubDate>
<thumbnail/>
<hit></hit>
 
xml 파싱하여 데이터가 이렇게 받고 있는데 item은 계속 반복 되구요
처음에 나오는 title이 아니라 item안에 있는 title 부터 받게 할수 있을까요?
 
while (parseEvent != XmlPullParser.END_DOCUMENT) {
switch (parseEvent) {
case XmlPullParser.START_TAG:
tag = parser.getName();
if (tag.compareTo("title") == 0) {
} else if (tag.compareTo("pubDate") == 0) {
} else if (tag.compareTo("hit") == 0) {
} else if (tag.compareTo("number") == 0) {
}
break;
}
 
이렇게 파싱하고 있구요
 
dom parser로 쓸려고 해도 한글이 안보이고 있네요
 
어떤 방법이 있을까요?
크라시엘 (2,320 포인트) 님이 2013년 5월 11일 질문

1개의 답변

0 추천
 
채택된 답변

Xml parsing에 대해선 약간 전무한 감이 있긴 합니다만, XmlPullParser의 태그에 따라 parser의 위치가 움직여집니다.

page의 element 안에는 total, pagesize, current, title, link, 그리고 item 서브 element가 있는 것으로 보여지네요.

 

먼저 Item 태그에 Parser가 도달해야합니다. ㅇㅅㅇ

parser의 start_tag가 item일떄까지 Parser의 위치를 이동시켜야합니다.

그리고 item태그에 도달했다면, item 태그 내 내용물들을 찾아 title을 얻어야하니, item의 END_TAG까지 검색하도록 일시제한합니다.

title 태그에 도달했다면, getText()메소드로 값을 가져옵니다.

//Parser가 움직이는 루프문 안에서

parser.next();

if(parser.getName().equals("item")
{
    parser.require(XmlPullParser.START_TAG, "item");

    while(parser.getEventType() != XmlPullParser.END_TAG)
    {
           if(name.equals("title")
           {
                   String itemTitle = "";
                   parser.require(XmlPullParser.START_TAG, "title");

                   if(parser.next() == XmlPullParser.TEXT)
                   {
                        itemTitle = parser.getText();
                        parser.nextTag();
                   }

                   parser.require(XmlPullParser.END_TAG, "title");
           }
    }
}

 

 

두부고기 (3,820 포인트) 님이 2013년 5월 12일 답변
크라시엘님이 2013년 5월 15일 채택됨
...