Pull解析Xml
发布时间:2020-12-16 05:59:14 所属栏目:百科 来源:网络整理
导读:在android中,解析Xml文件方式大概有三种Dom、SAX和Pull(推荐使用),个人也感觉pull方式比较简单,好用...所以前两种就pass掉.. 这里就简单的写下解析xml和生成xml的两个方法: 解析Xml public static ListPerson getPersons(InputStream in) throws Exception{
在android中,解析Xml文件方式大概有三种Dom、SAX和Pull(推荐使用),个人也感觉pull方式比较简单,好用...所以前两种就pass掉.. 这里就简单的写下解析xml和生成xml的两个方法: 解析Xml public static List<Person> getPersons(InputStream in) throws Exception{ List<Person> persons = null; Person person = null; //构造pullParser的对象 XmlPullParser pullParser = Xml.newPullParser(); //设置要解析的xml的数据 pullParser.setInput(in,"UTF-8"); int event = pullParser.getEventType(); //一直读取到xml结尾的标志 while(event != XmlPullParser.END_DOCUMENT){ switch (event) { //初始化list case XmlPullParser.START_DOCUMENT: persons = new ArrayList<Person>(); break; //遇到person节点初始化一个person对象并赋值 case XmlPullParser.START_TAG: if("person".equals(pullParser.getName())){ int id = Integer.parseInt(pullParser.getAttributeValue(0)); person = new Person(); person.setId(id); } if("name".equals(pullParser.getName())){ String name = pullParser.nextText(); person.setName(name); } if("age".equals(pullParser.getName())){ int age = Integer.parseInt(pullParser.nextText()); person.setAge(age); } break; //读取到person完毕的节点向list中添加person对象并重新将person设为null case XmlPullParser.END_TAG: if("person".equals(pullParser.getName())){ persons.add(person); person = null; break; } } //读取下一个节点 event = pullParser.next(); } return persons; }生成Xml public static void save(List<Person> persons,OutputStream out) throws Exception{ XmlSerializer serializer = Xml.newSerializer(); serializer.setOutput(out,"UTF-8"); serializer.startDocument("UTF-8",true); serializer.startTag(null,"persons"); for (Person person : persons) { serializer.startTag(null,"person"); serializer.attribute(null,"id",person.getId()+""); serializer.startTag(null,"name"); serializer.text(person.getName()); serializer.endTag(null,"name"); serializer.startTag(null,"age"); serializer.text(person.getAge()+""); serializer.endTag(null,"age"); serializer.endTag(null,"person"); } serializer.endTag(null,"persons"); serializer.endDocument(); out.flush(); out.close(); } Test.java private final static String TAG = "XmlTest"; public void testParse() throws Exception{ InputStream in = this.getClass().getClassLoader().getResourceAsStream("orathee.xml"); List<Person> persons = PersonService.getPersons(in); for (Person person : persons) { Log.i(TAG,person.toString()); } } public void testSave() throws Exception{ List<Person> persons = new ArrayList<Person>(); persons.add(new Person(3,"nimei",21)); persons.add(new Person(4,"lilei",22)); persons.add(new Person(5,"hanmeimei",23)); persons.add(new Person(6,"jim",24)); File file = new File(getContext().getFilesDir(),"test.xml"); FileOutputStream out = new FileOutputStream(file); PersonService.save(persons,out); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |