使用Pull 解析XML文件

前端之家收集整理的这篇文章主要介绍了使用Pull 解析XML文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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)}

原文链接:https://www.f2er.com/xml/294917.html

猜你在找的XML相关文章