android采用pull解析器解析和生成XML
在Android上解析XML文件可以采用SAX、DOM和Android的自带的pull。其中pull最方便和推荐使用:
对于一个XML文件中的内容,要定制一个JAVA BEAN来接收,先看下.XML文件的内容:
liming 30zhangxiaoxiao 25
看下解析方法:
/** * 解析XML * @param xml * @return * @throws Exception */ public List测试方法:getPersons(InputStream xml)throws Exception{ List persons = null; Person person = null; XmlPullParser pullParser = Xml.newPullParser(); pullParser.setInput(xml,"UTF-8");//为pull解析器设置要解析的数据 int event = pullParser.getEventType(); while(event != XmlPullParser.END_DOCUMENT){ switch (event) { case XmlPullParser.START_DOCUMENT: persons = new ArrayList (); break; case XmlPullParser.START_TAG: if("person".equals(pullParser.getName())){ int id = new Integer(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 = new Integer(pullParser.nextText()); person.setAge(age); } break; case XmlPullParser.END_TAG: if("person".equals(pullParser.getName())){ persons.add(person); person = null; } break; } event = pullParser.next(); } return persons; }
public void testPerson()throws Exception{ InputStream xml = this.getClass().getClassLoader().getResourceAsStream("person.xml"); PersonService ps = new PersonService(); List再看下生成XML文件:persons = ps.getPersons(xml); for (Person person : persons) { Log.i(TAG,person.toString()); } }
/** * 保存 * @param persons * @param out * @throws Exception */ public void save(Listpersons,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().toString()); serializer.startTag(null, "name"); serializer.text(person.getName()); serializer.endTag(null, "name"); serializer.startTag(null, "age"); serializer.text(person.getAge().toString()); serializer.endTag(null, "age"); serializer.endTag(null, "person"); } serializer.endTag(null, "persons"); serializer.endDocument(); out.flush(); out.close(); }
看下生成的测试方法:
public void testSave()throws Exception{ PersonService ps = new PersonService(); Listpersons = new ArrayList (); persons.add(new Person(43,"zhangxx",80)); persons.add(new Person(12,"lili",20)); persons.add(new Person(15,"xiaoxiao",8)); File xmlFile = new File(getContext().getFilesDir(),"itcase.xml"); FileOutputStream outputStream = new FileOutputStream(xmlFile); ps.save(persons, outputStream); }
报名学习加微信/QQ 1602007,关注《东方联盟网》微信公众号
>更多相关文章
首页推荐
佛山市东联科技有限公司一直秉承“一切以用户价值为依归
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 03-08消息称微软开发内部AI推理模型,或将成为Op
- 03-08美国法院驳回马斯克请求,未阻止OpenAI转型
- 03-08饿了么成立即时配送算法专家委员会 持续全局
- 03-08长安汽车:预计今年底长安飞行汽车将完成试
- 03-08谷歌推出虚拟试穿、AR美妆新功能
相关文章
24小时热门资讯
热门推荐
最新资讯
操作系统
黑客防御