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

안드로이드 xml파싱 때문에 질문드립니다.

0 추천
<user>
   <item>
     <phone>010111122222</phone>
     <name>김김김 </name>
     <score>43</score>
  </item>
  <item>
    <phone>01022224444</phone>
    <name>ㄹㄹㄹㄹㄹㄹ</name>
    <score/>
  </item>
  <item>
    <phone>14444</phone>
    <name>ㅌㅌㅌㅇㅌ</name>
    <score/>
  </item>
</user>

위와 같은 내용의 xml 파일이 DDNS와 APMSETUP을 이용해 만든 컴퓨터의 웹서버에 저장되어 있습니다. 이 파일은 mysql의 내용을 xml로 만든 것이구요. 이 xml의 내용을 안드로이드 화면 상으로 불러오고 싶은데 어떻게 해야 할지를 잘 모르겠습니다.... 

package com.example.phptest;
import java.io.InputStream;
import java.net.URL;
import java.util.Vector;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;
import android.R;
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends ListActivity { 
 Vector<String> goldvec;
 URL goldurl; //태그명을 저장 하는 변수
 String tag=""; //저장테이터 변수
 String total="";
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setListAdapter(new ArrayAdapter<String>(this, R.layout.simple_list_item_1, getXmldata()));
        // getXmldata() 함수를 만들어서 리턴받음
        ListView lv=getListView();
        lv.setTextFilterEnabled(true);
    }
    public Vector getXmldata(){
    XmlPullParserFactory factory;
    goldvec=new Vector<String>();
    goldvec.add("이름 점수 번호");
    try {
        factory=XmlPullParserFactory.newInstance();
      factory.setNamespaceAware(true);
              XmlPullParser xpp=factory.newPullParser();
            goldurl=new URL(Url);
            InputStream in=goldurl.openStream();
            xpp.setInput(in, "euc-kr");
            Log.d(tag, xpp.getName()+":"+xpp.getEventType());
            int eventType=xpp.getEventType(); //eventType -> 0
            while(eventType!=XmlPullParser.END_DOCUMENT){ //END_DOCUMENT->1
            if(eventType==XmlPullParser.START_TAG){//START_TAG->2
              tag=xpp.getName();
              if(tag.equals("phone")){
              total +=xpp.getAttributeValue(1)+"      ";
              }
            }else if(eventType==XmlPullParser.TEXT){//TEXT->4
              if(tag.equals("name") || tag.equals("score")){
              total+=xpp.getText()+"      ";
              }
            }else if(eventType==XmlPullParser.END_TAG){//END_TAG -> 3
              tag=xpp.getName();
              if(tag.equals("phone")){
              goldvec.add(total);
              total="";
              }
            }
            eventType=xpp.next();
            }
  } catch (Exception e) {
  e.printStackTrace();
  }
  return goldvec;
    }
}

이런 방식으로 웹에서 얻은 샘플 예제를 활용해서 만들어봤는데 잘 안되네요...뭐가 문제일까요?

익명사용자 님이 2013년 5월 17일 질문

1개의 답변

0 추천

안녕하세요 전 요렇게 쓰고 있습니다 도움되었으면 좋겠네요.

Void String parse(String str)
    {
        String tag = null;
        boolean code_flag = false;
        try
        {
            XmlPullParser parser = Xml.newPullParser();
            parser.setInput(new StringReader(str));
 
            int eventType;
            while ((eventType = parser.next()) != XmlPullParser.END_DOCUMENT)
            {
                switch (eventType)
                {
                    case XmlPullParser.START_TAG:
                        tag = parser.getName();
 
                        if (tag.equals("시작타그(제일바깥쪽타그)"))
                        {
                            code_flag = true;
                        }
                    break;
 
                    case XmlPullParser.END_TAG:
                        tag = parser.getName();
 
                        if (tag.equals("시작타그(제일바깥쪽타그)"))
                        {
                            code_flag = false;
                        }
                    break;
 
                    case XmlPullParser.TEXT:
                        if (code_flag)
                        {
                            if (tag.equals("받아오고싶은타그"))
                            {
                                변수 = parser.getText();
                            }
                        }
                    break;
                }
            }
        }
        catch (Exception e)
        {
            Log.e(null, "Error:parse");
        }
    }

 

  (11,920 포인트) 님이 2013년 5월 17일 답변
...