android采用pull解析器解析和生成XML
16lz
2021-01-23
在Android上解析XML文件可以采用SAX、DOM和Android的自带的pull。其中pull最方便和推荐使用:
对于一个XML文件中的内容,要定制一个JAVA BEAN来接收,先看下.XML文件的内容:
<?xml version="1.0" encoding="UTF-8"?><persons><person id="23"><name>liming</name><age>30</age></person><person id="20"><name>zhangxiaoxiao</name><age>25</age></person></persons>
看下解析方法:
/** * 解析XML * @param xml * @return * @throws Exception */public List<Person> getPersons(InputStream xml)throws Exception{List<Person> 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<Person>();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<Person> persons = ps.getPersons(xml);for (Person person : persons) {Log.i(TAG,person.toString());}}再看下生成XML文件:
/** * 保存 * @param persons * @param out * @throws Exception */public 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().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();List<Person> persons = new ArrayList<Person>();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);}
更多相关文章
- Android 布局文件属性讲解
- Android Gallery控件使用方法详解
- Android 设置横屏竖屏的方法
- Android 复习笔记之图解View类的XML属性、相关方法及说明
- Android关于looper的几个方法的个人理解
- (Android)JavaSocket编程,文件上传到服务器,客户端Android,服务器端J2
- 读取local.properties文件