package com.example.day14_xmlpull;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import android.os.Bundle;
import android.app.Activity;
import android.util.Xml;
import android.view.Menu;
import android.view.View;
/**
* 解析Xml
*
* @author gaoyn
*
*/
public class MainActivity extends Activity {
List<Person> persons = new ArrayList<Person>();
private String tagname;
Person p;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// 解析xml文件的方法
public void pullxml(View v) {
// 1 得到pull解析器
XmlPullParser xmlParser = Xml.newPullParser();
try {
// 2 加载需要解析的文件
xmlParser.setInput(getAssets().open("data.xml"), "utf-8");
// 3 开始读取文档
int type = xmlParser.getEventType();
// 如果文档没有读到结束标签,循环进行读取文档内容
while (type != XmlPullParser.END_DOCUMENT) {
// 读取tag标签
switch (type) {
case XmlPullParser.START_DOCUMENT:
System.out.println("开始读取文档+++++++++++++++++");
break;
case XmlPullParser.START_TAG:
// 如果读取到开始标签,把标签名进行读取<person>
tagname = xmlParser.getName();
System.out.println(tagname+"++++++++++++++++标签名");
if (tagname.equals("person")) {
p = new Person();
// 得到标签person中的属性值
String sid = xmlParser.getAttributeValue(0).trim();
p.setId(Integer.parseInt(sid));
}
break;
case XmlPullParser.TEXT:
if (tagname.equals("name")) {
p.setName(xmlParser.getText());
} else if (tagname.equals("age")) {
// System.out.println(xmlParser.getText());
String sage = xmlParser.getText().trim();
p.setAge(Integer.parseInt(sage));
}
break;
case XmlPullParser.END_TAG:
//结束时,对标签名赋值
tagname=xmlParser.getName();
//如果结束标签为</person>
if (tagname.equals("person")) {
persons.add(p);
}
tagname="";
break;
default:
break;
}
/**
* 业务逻辑处理
*/
type = xmlParser.next();
}
System.out.println("文档读取完毕++++++++++++++++++" + persons);
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}