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.XmlPullParserFactory; 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){ //得到文件 try { InputStream inputStream = getAssets().open("NewFile.xml"); //得到解析工厂 XmlPullParserFactory newInstance = XmlPullParserFactory.newInstance(); //通过解析工厂的到解析器 XmlPullParser parser = newInstance.newPullParser(); //开始解析 1.得到文件 2.编码格式 parser.setInput(inputStream, "UTF-8"); //得到事件的类型 int eventType = parser.getEventType(); //遇到文档的结束 就停止 while (eventType != XmlPullParser.END_DOCUMENT) { //判断遇到的事件 String parserName = parser.getName(); switch (eventType) { case XmlPullParser.START_DOCUMENT: //开始文档 list = new ArrayList<Student>(); break; case XmlPullParser.START_TAG: //开始节点 只要是开始的节点 都能用它 if(parserName.equals("student")){ student = new Student(); //通过下标进行得值 String id = parser.getAttributeValue(0); String group = parser.getAttributeValue(1); student.setId(id); student.setGroup(group); }else if(parserName.equals("name")){ //.nextText();得到标签values值 String name = parser.nextText(); student.setName(name); }else if(parserName.equals("sex")){ String sex = parser.nextText(); student.setSex(sex); }else if(parserName.equals("age")){ String age = parser.nextText(); student.setAge(age); }else if(parserName.equals("email")){ String email = parser.nextText(); student.setEmail(email); }else if(parserName.equals("birthday")){ String birthday = parser.nextText(); student.setBirthday(birthday); }else if(parserName.equals("memo")){ String memo = parser.nextText(); student.setMemo(memo); } break; case XmlPullParser.END_TAG: //结束节点 if(parserName.equals("student")){ list.add(student); } break; default: break; } //解析完一行 向下继续读取 eventType = parser.next(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } Log.i("TAG", list.size()+"===="+list.get(0).toString()); } }