간단하게 설명드리면 xml을 파싱중입니다.
<name>test1</name>
<style>point</point>
<value>1111.1111,1111.1111</value>
<name>test2</name>
<style>point</point>
<value>2222.2222,2222.2222</value>
<name>test3</name>
<style>point</point>
<value>3333.3333,3333.3333</value>
이런 xml 파일이 있다고 할때
-------------------------------------------------------------------
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
tv1.setText("start_document");
break;
case XmlPullParser.END_DOCUMENT:
tv2.setText("end_document");
break;
case XmlPullParser.END_TAG:
tv3.setText("end_tag");
break;
case XmlPullParser.START_TAG:
if (parser.getName().equals("style")) { // stylel 일 때는 TEXT의 0로
initem = 0;
} else if (parser.getName().equals("name")) { // name 일 때는 TEXT의 1로
initem = 1;
} else if (parser.getName().equals("value")) { // value 일때는 TEXT의 2으로
initem = 2;
}
tv4.setText("start_tag");
break;
case XmlPullParser.TEXT:
ItemName="";
if (initem == 0)// style
{
ItemName = parser.getText();
parsing_data[0] = ItemName;
//Log.d("parsing_data[0]", parsing_data[0]);
initem = 10;
}
else if(initem == 1)// name
{
ItemName = parser.getText();
parsing_data[1] = ItemName;
//Log.d("parsing_data[1]",parsing_data[1]);
initem = 10;
}
else if(initem == 2)// value
{
ItemName = parser.getText();
if (ItemName.length() > 5) {
parsing_data[2] = ItemName;
//Log.d("parsing_data[2]", parsing_data[2]);
}
initem = 10;
}
tv5.setText("text");
datalist.add(parsing_data);
break;
}
eventType = parser.next();
}
이런 식으로 만들었습니다.
제 생각에는
datalist 에
<style> <name> <value>
0 point test1 1111.1111,1111.1111
1 point test2 2222.2222,2222.2222
2 point test3 3333.3333,3333.3333
이렇게 저장이 되어있다고 생각하는데요..
Log.d("datalist----------", Arrays.toString(datalist.get(0)));
Log.d("datalist----------", Arrays.toString(datalist.get(1)));
Log.d("datalist----------", Arrays.toString(datalist.get(2)));
이렇게 해서 뿌려보면..
[point, test3, 3333.3333,3333.3333]
[point, test3, 3333.3333,3333.3333]
[point, test3, 3333.3333,3333.3333]
이렇게 나오거든요 ㅠㅠ..
죄송합니다. 마지막값이 다 나오네요. 수정했습니다.
parsing_data[0],parsing_data[1],parsing_data[2]에는 값 잘 들어가는거 확인했는데..
ArrayList 의 값을 확인해보면 마지막값과 다 동일해요 ㅠㅠ
이거 뭐가 잘못된거죠;;
아 참고로 선언 부분은 아래처럼 했어요.
public ArrayList<String[]> datalist = new ArrayList<String[]>();
public String[] parsing_data = new String[3];