一、将文件cope到assets目录下
二、需要添加一个Bean类
public class MainActivity extends Activity {
private ListView list_view;
private ArrayList<Bean> list;
private Bean bean;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list_view = (ListView) findViewById(R.id.list_view);
//Could not execute method of the activity
}
public void onPlay(View v) {
ArrayList<Bean> arrayList = analyze();
//展示到listview上面
list_view.setAdapter(new ArrayAdapter<Bean>(this,
android.R.layout.simple_list_item_1, list));
}
private ArrayList<Bean> analyze() {
// 获得assets的文件
try {
// 获取到输入流
InputStream input = getAssets().open("persons.xml");
// 得到解析器
XmlPullParser newPullParser = Xml.newPullParser();
// 设置流 ,设置编码的格式
newPullParser.setInput(input, "utf-8");
// 获取到标签的类型
int eventType = newPullParser.getEventType();
// 如果不是文档标签就会一直解析
while (eventType != XmlPullParser.END_DOCUMENT) {
//得到标签的名称
String tog_name = newPullParser.getName();
switch (eventType) {
//文档开始标签
/*case XmlPullParser.START_DOCUMENT:
break;*/
//开始标签
case XmlPullParser.START_TAG:
if ("persons".equals(tog_name)) {
list = new ArrayList<Bean>();
} else if ("person".equals(tog_name)) {
bean = new Bean();
//获取属性的内容,是根据索引来定的
String id= newPullParser.getAttributeValue(0);
bean.setNid(id);
Log.i("--------", "bean:"+bean);
}else if ("name".equals(tog_name)) {
//表示当前的下一条
String name = newPullParser.nextText();
bean.setName(name);
}else if ("age".equals(tog_name)) {
String age = newPullParser.nextText();
bean.setAge(age);
}
break;
//文本标签
/*
* case XmlPullParser.TEXT:
* break;
*/
//结束标签
case XmlPullParser.END_TAG:
if ("person".equals(tog_name)) {
//将Bean添加到集合中
list.add(bean);
bean=null;
}else if ("persons".equals(tog_name)) {
return list;
}
break;
default:
break;
}
//每次都向下执行一步
eventType = newPullParser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}