//需要解析的最简单的xml文件,放在assets目录下面
<persons>
<person id="23">
<name>
lee
</name>
<age>
30
</age>
</person>
<person id="20">
<name>leo</name>
<age>24</age>
</person>
</persons>
//Bean里面的属性
private String id;
private String name;
private String age;
//Activity页面,开始解析
public class MainActivity extends Activity {
List<Bean>list=new ArrayList<Bean>();
private String tagName;
private Bean bean;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
//得到输入流
InputStream inputStream = getAssets().open("data.xml");
//得到XML解析器
XmlPullParser pullParser = Xml.newPullParser();
//设置需要解析的输入流和编码格式
pullParser.setInput(inputStream, "utf-8");
//得到事件类型
int eventType = pullParser.getEventType();
//只要文档没有结束,就一直读取
while(eventType!=pullParser.END_DOCUMENT){
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
System.out.println("开始读文档");
break;
case XmlPullParser.START_TAG:
tagName = pullParser.getName();
if("person".equals(tagName)){
bean = new Bean();
//通过角标获取属性值
String id = pullParser.getAttributeValue(0).trim();
bean.setId(id);
}else if("name".equals(tagName)){ //读到name开始标签
//得到标签里的文本
String nameText = pullParser.nextText().trim();
bean.setName(nameText);
}else if("age".equals(tagName)){
//得到标签里的文本
String ageText = pullParser.nextText();
bean.setAge(ageText);
}
break;
//读到了结束标签:
case XmlPullParser.END_TAG:
//得到结束标签的名字
tagName= pullParser.getName();
//结束标签是person,代表着一条person数据以及读完并封装
if("person".equals(tagName)){
System.out.println(bean.toString());
//添加到bean集合
list.add(bean);
}
break;
case XmlPullParser.END_DOCUMENT:
System.out.println("文档结束");
break;
}
//得到下一个节点的类型
eventType=pullParser.next();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}