Android系统已经集成了Pull,所以不用导包。
Xml解析:
public static List<Person> getPersons(InputStream xml) throws Exception { List<Person> persons = null; Person person = // 获取xml的破解器,有下列两种方法 //XmlPullParser pullParser = XmlPullParserFactory.newInstance().newPullParser();XmlPullParser pullParser = Xml.newPullParser();// 为破解器设置要解析的数据pullParser.setInput(xml,"UTF-8") // 首先将xmml数据读到字节数组中,,然后一个一个字符读取,判断<?xml version="1.0" encoding="UTF-8" ?> // 是否符合XML中的某个语法,然后触发相应的事件。int envnt = pullParser.getEventType()while (envnt != XmlPullParser.END_DOCUMENT) { //调用结束条件switch (envnt) {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 = Person()person.setId(id)}"name"//获取节点后面的textString name = pullParser.nextText()person.setName(name)"age"age = Integer(pullParser.nextText())person.setAge(age) case END_TAGpersons.add(person)person = }//解析到<?xml version="1.0" encoding="UTF-8" ?>完成之后,解析器不会自动解析,如果想继续解析结点,调用如下方法envnt = pullParser.next(); return persons}
测试类:
private static final String TAG = "TestDemo"public void testPersons() Exception{InputStream is = this.getClass().getClassLoader().getResourceAsStream("person.xml"); List<Person> persons = PersonServace.getPersons(is)for(Person p : persons){Log.i(TAGp.toString())}
生成XML文件:
//保存数据到xml文件中public static void save(List<Person> personsOutputStream os) //得到序列化器XmlSerializer serializer = Xml.newSerializerserializer.setOutput(os//设置输出serializer.startDocument("UTF-8"serializer.startTag(null,255)">"persons"//迭代集合,得到每个元素,生成person节点serializer.startTag(null,)serializer.attribute("id",43); font-family:'Courier New'">p.getId().toString()) serializer.startTag(serializer.text(p.getName())serializer.endTag(serializer.text(p.getAge().toString());"persons" //结束文档serializer.endDocument(); os.flush()os.close()}
测试文件:
public void testSave() throws Exception{ List<Person> persons = new ArrayList<>();persons.add(Person(19,255); font-family:'Courier New'">"yanxi"10))File xmlFile = File(getContext().getFilesDir()"itcast.xml"FileOutputStream fos = FileOutputStream(xmlFile)PersonServace.save(personsfos)} (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|