加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用Pull 解析XML文件

发布时间:2020-12-16 08:31:45 所属栏目:百科 来源:网络整理
导读:Android 系统已经集成了 Pull ,所以不用导包。 Xml 解析: public static ListPerson getPersons (InputStream xml) throws Exception { ListPerson persons = null; Person person = // 获取 xml 的破解器,有下列两种方法 //XmlPullParser pullParser = X

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读