package com.example.pull_demo;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends Activity {
private List<Student> list;
private Student student;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//点击开始进行解析
public void getpull(View v) {
//得到xml的输入流 ,文件名字要带后缀;
try {
InputStream inputStream = getAssets().open("NewFile.xml");
//获取pull解析工厂
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
//得到parser解析器
XmlPullParser parser = factory.newPullParser();
//给解析器设置xml文件的流;
parser.setInput(inputStream, "UTF-8");
//得到type, 标记节点的类型
int eventType = parser.getEventType();
//while循环
while (eventType != parser.END_DOCUMENT) {
String parserName = parser.getName();
switch (eventType) {
case XmlPullParser.START_DOCUMENT: //开始文档
list = new ArrayList<Student>();
break;
case XmlPullParser.START_TAG: //开始节点 只要是开始的节点 都能用它
//解析开始节点标签;
parseStartTag(parser, parserName);
break;
case XmlPullParser.END_TAG:
if (parserName.equals("student")) {
list.add(student);
}else {
//do nothing
}
break;
}
//让解析器向后解析
eventType = parser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
Log.e("wzq",list.size() + "==="+list.get(0).toString());
}
private void parseStartTag(XmlPullParser parser, String parserName) throws XmlPullParserException, IOException {
if (parserName.equals("student")) {
student = new Student();
//取第一个属性
student.setGroup(parser.getAttributeValue(0));
//取第二个属性
student.setId(parser.getAttributeValue(1));
} else if (parserName.equals("name")) {
student.setName(parser.nextText()); //设置名字
} else if (parserName.equals("sex")) {
student.setSex(parser.nextText()); //
} else if (parserName.equals("age")) {
student.setAge(parser.nextText()); //
} else if (parserName.equals("email")) {
student.setEmail(parser.nextText()); //
} else if (parserName.equals("birthday")) {
student.setBirthday(parser.nextText());
} else if (parserName.equals("memo")) {
student.setMemo(parser.nextText());
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<root>
<student group="1" id="1">
<name>张三</name>
<sex>男</sex>
<age>18</age>
<email>zhangsan@163.com</email>
<birthday>1987-06-08</birthday>
<memo>好学生</memo>
</student>
<student group="2" id="2">
<name>李四</name>
<sex>女</sex>
<age>18</age>
<email>lisi@163.com</email>
<birthday>1987-06-08</birthday>
<memo>好学生</memo>
</student>
<student group="3" id="3">
<name>小王</name>
<sex>男</sex>
<age>18</age>
<email>xiaowang@163.com</email>
<birthday>1987-06-08</birthday>
<memo>好学生</memo>
</student>
<student group="4" id="4">
<name>小张</name>
<sex>男</sex>
<age>18</age>
<email>xiaozhang@163.com</email>
<birthday>1987-06-08</birthday>
<memo>好学生</memo>
</student>
<student group="5" id="5">
<name>小明</name>
<sex>男</sex>
<age>18</age>
<email>xiaoming@163.com</email>
<birthday>1987-06-08</birthday>
<memo>好学生</memo>
</student>
</root>