마스터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; 
 String Url="http://hphz10.iptime.org/user.xml"; 
 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일 답변
...