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

xmlpullparser를 이용해 데이터 불러오기

0 추천

제 xml 파일이 

<?xml version="1.0" encoding="UTF-8"?>
<node>
<item>
<checkio>수입</checkio>
<money>2000</money>
</item>
<item>
<checkio>지출</checkio>
<money>-1000</money>
</item></node>

이렇게 생겨서 checkio만 불러오고 싶어서 

ArrayList<String> checkio = getXmlDataList("chart2result.xml","checkio");

를써서 getXmlDataList()를 호출시켰는데 

getXmlDataList() 코드 맞게썻는지좀 봐주시겠어요?

 private ArrayList<String> getXmlDataList(String filename, String str) { //태그값 여러개를 받아오기위한 ArrayList<string>형 변수
	        String rss = SERVER_ADDRESS + "/";
	        ArrayList<String> ret = new ArrayList<String>();
	        try { //XML 파싱을 위한 과정
	            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
	            factory.setNamespaceAware(true);
	            XmlPullParser xpp = factory.newPullParser();
	            URL server = new URL(rss + filename);
	            InputStream is = server.openStream();
	            xpp.setInput(is, "UTF-8");
	             
	            int eventType = xpp.getEventType();
	             
	            while(eventType != XmlPullParser.END_DOCUMENT) {
	            	if(eventType == XmlPullParser.START_TAG) {
	                	if(xpp.getName().equals("item")) { 
	                    	if(xpp.getName().equals(str)){
	                        ret.add(xpp.nextText());
	                        String data = xpp.nextText();
	                        String data2 = xpp.nextText();
	                        Log.v("TAG", data);
	                        Log.v("TAG2", data2);
	                    	}else{}
	                        
	                    }else{continue;}
	                }else{continue;}
	                eventType = xpp.next();
	            }
	        } catch(Exception e) {
	            System.out.println(e+"B");
	        }
	         
	        return ret;
	    }
	   

 

 

 

 

익명사용자 님이 2014년 8월 4일 질문
로그에 tag가 안뜨는데,  뭐가 틀렸는지 못잡겠어서ㅠㅠ질문 드려요..

1개의 답변

0 추천
 
채택된 답변

더 깔끔하게 만들면 좋지만.. 이렇식으로 하니깐 되네요... ^^

 

String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+

" <node>"+

" <item>"+

" <checkio>수입</checkio>"+

" <money>2000</money>"+

" </item>"+

" <item>"+

" <checkio>지출</checkio>"+

" <money>-1000</money>"+

" </item></node> ";

 

ArrayList<Item> itemList =  getXmlDataList(xml);

Log.v("TAG", "itemList,size : " + itemList.size());

for (Item item : itemList) {

Log.v("TAG", "item : getCheckio = " + item.getCheckio() + "\t getMoney = " + item.getMoney());

}

 

 

 

private ArrayList<Item> getXmlDataList(String xmlStr) {

 

ArrayList<Item> ret = new ArrayList<Item>();

Item item = null;

try {

 

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();

factory.setNamespaceAware(true);

 

XmlPullParser xpp = factory.newPullParser();

xpp.setInput( new StringReader (xmlStr));

 

int eventType = xpp.getEventType();

while (eventType != XmlPullParser.END_DOCUMENT) {

 

if(eventType == XmlPullParser.START_TAG) {

Log.v("TAG", "Start tag "+xpp.getName());

 

if (xpp.getName().equals("item")) {

// 아이템

item = new Item();

ret.add(item);

 

} else if (xpp.getName().equals("checkio")) {

// 수입/지출 구분

if(xpp.next() == XmlPullParser.TEXT) {

item.setCheckio(xpp.getText());

Log.v("TAG", "Text checkio : "+xpp.getText());

}

 

} else if (xpp.getName().equals("money")) {

// 수입/지출 금액

if(xpp.next() == XmlPullParser.TEXT) {

item.setMoney(xpp.getText());

Log.v("TAG", "Text money : "+xpp.getText());

}

 

} else {

Log.v("TAG", "Text "+xpp.getText());

 

}

 

}

eventType = xpp.next();

 

}

 

} catch (XmlPullParserException e) {

Log.v("TAG", "XmlPullParserException : " + e);

} catch (IOException e) {

Log.v("TAG", "IOException : " + e);

}

 

return ret;

}

 

 

 

class Item {

 

private String checkio;

private String money;

 

public String getCheckio() {

return checkio;

}

public void setCheckio(String checkio) {

this.checkio = checkio;

}

public String getMoney() {

return money;

}

public void setMoney(String money) {

this.money = money;

}

 

}

 

 

Yong-Yong (3,500 포인트) 님이 2014년 8월 4일 답변
getXmlDataList(String xmlStr);이렇게 받아들이면 ,
xmlStr에는 xml파일명이 들어간다는건데,
xml파일이 있는 url주소는 불러주는건 어디다가  써야되는건가요???
그거는 기존에 작성 하신대로 하거나...
HTTP 통신 후 결과를 문자열 형태로 받아서 넘겨주면 될 것 같은데요..
저는 URL을 몰라서... 문자열로 테스트 해봤어요~
...