Android(安卓)Pull解析xml
16lz
2021-12-04
阅读更多 在Android平台上可以使用Simple API for XML(SAX) 、 Document Object Model(DOM)和Android附带的pull解析器解析XML文件。
xml代码
解析核心代码
javaBean
添加测试用例
xml代码
<?xml version="1.0" encoding="UTF-8"?>李明 30李向梅 25
解析核心代码
package cn.itcast.service;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlSerializer;import android.util.Xml;import cn.itcast.domain.Person;public class PersonService {/** * 获取数据 * @param xml * @return * @throws Exception */public static ListgetPersons(InputStream xml) throws Exception{List persons = null;Person person = null;XmlPullParser pullParser = Xml.newPullParser();pullParser.setInput(xml, "UTF-8");//为Pull解析器设置要解析的XML数据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;}/** * 保存数据 * @param persons 数据 * @param out 输出方向 * @throws Exception */public static void save(List 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();}}
javaBean
package cn.itcast.domain;public class Person {private Integer id;private String name;private Integer age;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";}public Person(Integer id, String name, Integer age) {this.id = id;this.name = name;this.age = age;}public Person(){}}
添加测试用例
package cn.itcast.test;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import cn.itcast.domain.Person;import cn.itcast.service.PersonService;import android.test.AndroidTestCase;import android.util.Log;public class PersonServiceTest extends AndroidTestCase {private static final String TAG = "PersonServiceTest";public void testPersons() throws Exception{InputStream xml = this.getClass().getClassLoader().getResourceAsStream("person.xml");Listpersons = PersonService.getPersons(xml);for(Person person : persons){Log.i(TAG, person.toString());}}public void testSave() throws Exception{List persons = new ArrayList ();persons.add(new Person(43, "zhangxx", 80));persons.add(new Person(12, "lili", 20));persons.add(new Person(78, "xiaoxiao", 8));// <包>/filesFile xmlFile = new File(getContext().getFilesDir(), "itcast.xml");FileOutputStream outStream = new FileOutputStream(xmlFile);PersonService.save(persons, outStream);}}
更多相关文章
- 常用的android权限配置和常用工具代码
- Android(安卓)5.1状态栏背景色定制 在Launcher3界面显示透明,在其
- ViewPager实现一个页面多个Item的显示
- Android(安卓)数据导出之Excle jxl.jar
- Android桌面小部件实例 桌面小时钟
- Android(安卓)底部地址选择弹框
- Android(安卓)使用Json实现服务器与客户端数据的交互
- Android:获取设备ID、型号等
- Android背景渐变色效果