序列化
private XmlSerializer XmlSerializerserializer; private File Filefile; private FileOutputStream OutputStreamos; private File file; private XmlSerializer serializer; private OutputStream os; private List<Student> list; public void onClick(View v) { // 序列化 XmlSerializerserializer = Xml.newSerializer(); try { Filefile = new File(Environment .getExternalStorageDirectory(), "student.xml"); OutputStreamos = new FileOutputStream(file); serializer.setOutput(os, "utf-8");// 设置存放位置 // 开始序列化 serializer.startDocument("utf-8", true);// 开始文档 serializer.startTag(null, "students"); for (int i = 0; i < list.size(); i++) { // 开始写内层标签 //name serializer.startTag(null, "student"); serializer.startTag(null, "name"); serializer.text(list.get(i).getName()); serializer.endTag(null, "name"); //age serializer.startTag(null, "age"); serializer.text(list.get(i).getAge()); serializer.endTag(null, "age"); serializer.endTag(null, "student"); } serializer.endTag(null, "students"); serializer.endDocument();// 结束文档 } catch (Exception e) { //TODO Auto-generated catch block e.printStackTrace(); } Toast.makeText(MainActivity.this, "序列化完毕", 0).show(); }
pull解析
private final FileInputStream InputStreaminputStream; private InputStream inputStream; public voidonClick(View v) { List<Student>list = null; Studentstudent = null; try{ //设置解析文件路径 XmlPullParser parser = Xml.newPullParser();//获得pull解析器 InputStreaminputStream = new FileInputStream(new File( Environment.getExternalStorageDirectory(), "student.xml")); parser.setInput(inputStream,"utf-8"); //开始解析 int type = parser.getEventType();//获取事件的类型 while (type !=XmlPullParser.END_DOCUMENT) {//只要事件类型不是结束标签,就一直往下解析 switch(type) { case XmlPullParser.START_TAG://读取到这里就表示开始读取内容了,这里标识的是开始事件 if (parser.getName().equals("students")){//读取到这里的时候创建集合 list= new ArrayList<Student>(); } else if(parser.getName().equals("student")) {//读取到这里应该创建对象 student= new Student(); }else if (parser.getName().equals("name")) { student.setName(parser.nextText()); }else if (parser.getName().equals("age")) { student.setAge(parser.nextText()); } break; caseXmlPullParser.END_TAG: if(parser.getName().equals("student")) { list.add(student);//把对象放入集合 student = null;//装入集合后,把对象置为null,方便再次封装 } } type = parser.next();//这一步是为了让事件继续推进 } }catch (Exception e) { //TODO Auto-generated catch block e.printStackTrace(); } //解析完成后提示,然后打印 Toast.makeText(MainActivity.this,"pull解析完毕", 0).show(); System.out.println(list); }