在Android应用中使用Pull解析XML文件(传智播客视频笔记)

Service.java源码:

package com.sinaapp.ssun.service; import java.io.InputStream; import java.io.OutputStream; import java.util.*; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; import org.xmlpull.v1.XmlSerializer; import android.util.Xml; import com.sinaapp.ssun.domain.Person; public class Service { /** * 获取XML文件中的数据 * @param xml * @return * @throws Exception */ public static List<Person> getPersons(InputStream xml) throws Exception { List<Person> persons = null; XmlPullParser parser = XmlPullParserFactory.newInstance() .newPullParser(); // parser = Xml.newPullParser(); parser.setInput(xml, "UTF-8"); int event = parser.getEventType(); Person p = null; while (event != XmlPullParser.END_DOCUMENT) { switch (event) { case XmlPullParser.START_DOCUMENT: persons = new ArrayList<Person>(); break; case XmlPullParser.START_TAG: if("person".equals(parser.getName())){ p = new Person(); int id = Integer.parseInt(parser.getAttributeValue(0)); p.setId(id); } if("name".equals(parser.getName())){ String name = parser.nextText(); p.setName(name); } if("age".equals(parser.getName())){ int age = Integer.parseInt(parser.nextText()); p.setAge(age); } break; case XmlPullParser.END_TAG: if("person".equals(parser.getName())){ persons.add(p); p = null; } break; } event = parser.next(); } return persons; } /** * 保存数据到XML文件中 * @param persons * @param out * @throws Exception */ public static 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 p: persons){ serializer.startTag(null, "person"); serializer.attribute(null, "person", p.getId()+""); serializer.startTag(null, "name"); serializer.text(p.getName()); serializer.endTag(null, "name"); serializer.startTag(null, "age"); serializer.text(p.getAge()+""); serializer.endTag(null, "age"); serializer.endTag(null, "person"); } serializer.endTag(null, "persons"); serializer.endDocument(); out.flush(); out.close(); } } Person.java源码:

package com.sinaapp.ssun.domain; public class Person { private String name; private int age; private int id; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public Person(String name, int age, int id) { this.name = name; this.age = age; this.id = id; } public Person() { super(); } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", id=" + id + "]"; } }
text.xml文件:

<!--test.xml--> <?xml version="1.0" encoding="UTF-8"?><!-- 开始文档语法 --> <persons> <person id="1"> <name>ssun</name> <age>19</age> </person> <person id="2"> <name>cobe</name> <age>24</age> </person> </persons>
单元测试TestService.java源码:

package com.sinaapp.ssun.test; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; import android.test.AndroidTestCase; import android.util.Log; import com.sinaapp.ssun.domain.Person; import com.sinaapp.ssun.service.Service; public class TestService extends AndroidTestCase { private final String Tag = "Test"; public void testPersons() throws Exception{ List<Person> persons = Service.getPersons(this.getClass().getClassLoader().getResourceAsStream("test.xml")); for(Person p : persons){ Log.i(Tag, p.toString()); } } public void testSave() throws Exception{ List<Person> persons = new ArrayList<Person>(); persons.add(new Person("www",19,23)); persons.add(new Person("hhh",19,3)); persons.add(new Person("qqq",19,24)); persons.add(new Person("ooo",19,25)); File file = new File(this.getContext().getFilesDir(),"test2.xml"); FileOutputStream out = new FileOutputStream(file); Service.save(persons, out); } }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux级别3怎么配置DNS,Linux下DNS服务器配置详解

6)辅助区域的文件基本和主区域的配置一样&#xff0c;就是不再需要在options块中加allow-transfer {}&#xff1b;&#xff0c;编辑named.rfc1912.zones文件&#xff0c;如下图进行添加&#xff1a;一定要将默认的"allow-update {none;}; "项&#xff0c;即将允许更新…

入门机器学习,这一步必不可少!

AI这个词相信大家都非常熟悉&#xff0c;近几年来人工智能圈子格外热闹&#xff0c;光是AlphoGo就让大家对它刮目相看。今天小天就来跟大家唠一唠如何进军人工智能的第一步——机器学习。在机器学习领域&#xff0c;Python已经成为了主流。一方面因为这门语言简单易上手&#x…

有趣的时钟

网址&#xff1a; http://chabudai.org/blog/?p59 转载于:https://blog.51cto.com/zhengchangbai/883557

.NET 中的 Worker Service 入门介绍

翻译自 Steve Gordon 2020年3月30日的文章 《WHAT ARE .NET WORKER SERVICES?》 [1]随着 .NET Core 3.0 的发布&#xff0c;ASP.NET 团队引入了一个新的 Worker Service 项目模板&#xff0c;该模板作为 .NET SDK 的一部分发布。在本文中&#xff0c;我将向您介绍这个新模板&a…

linux实验目的能学会什么意思,Linux实验.doc

Linux实验实验一&#xff1a;Linux系统的安装时间&#xff1a;一、实验目的1&#xff0e;了解Linux操作系统的内核版本和发行版本&#xff1b;2&#xff0e;掌握Fedora、RedHat操作系统的安装方法。二、实验内容和步骤&#xff1a;见教材第二章及相应课件。三、参考内容CD-ROM引…

为什么前后端分离了,你比从前更痛苦?

你有没有遇到过&#xff1a;前端代码刚写完&#xff0c;后端的接口又变了。接口文档永远都是不对的。测试工作永远只能临近上线才能开始。为什么前后端分离了&#xff0c;你比从前更痛苦&#xff1f;前后端分离早已经不是新闻&#xff0c;当真正分离之后确遇到了更多问题。要想…

响应式设计(Response Web Design)浅谈

响应式Web设计&#xff0c;这个话题可能是当下Web设计领域里讨论和应用比较多的话题了&#xff0c;为什么要响应式Web设计?什么是响应式Web设计? Web发展迅速&#xff0c;各种应用和服务层出不穷&#xff0c;现在打开电脑&#xff0c;可能使用最多的程序应该是浏览器了&#…

C# this关键字的3种用法

用法一 this代表当前类的实例对象namespace Demo {public class Test{private string scope "全局变量";public string getResult(){string scope "局部变量";// this代表Test的实例对象// 所以this.scope对应的是全局变量// scope对应的是getResult方法…

c语言哈密顿路径算法,用于检查给定图中是否存在哈密顿循环或路径的C ++程序...

哈密顿循环是哈密顿路径&#xff0c;因此从哈密顿路径的最后一个顶点到第一个顶点有一条边(在图中)。它在无向图中是一条路径&#xff0c;该路径恰好访问该图的每个顶点一次。功能和目的&#xff1a;Begin1.function isSafe() is used to check for whether it is adjacent to …

现在6岁的小朋友都开始学编程了……

前段时间&#xff0c;朋友跟小木说&#xff1a;现在的小孩什么都要学&#xff0c;以后是不是都要学编程了&#xff1f;小木鄙夷地笑了一下&#xff1a;他们已经学编程了啊&#xff01;朋友表情↓↓↓朋友&#xff1a;纳尼&#xff1f;&#xff1f;&#xff1f;我到大学才接触编…

操作分布式文件之三:如何访问和操作远程文件

FttpAdapter fa new FttpAdapter("fttp://10.232.20.151/home/qianfeng.py/fttp/tmp/1.log"); 上面实例化一个FttpAdapter类&#xff0c;并输入一个fttp路径&#xff0c;可以是一个目录路径&#xff0c;也可以是个文件路径 FttpAdapter类提供了一系列访问远程文件的…

记一次 .NET 医院CIS系统 内存溢出分析

一&#xff1a;背景 1. 讲故事前几天有位朋友加wx求助说他的程序最近总是出现内存溢出&#xff0c;很崩溃&#xff0c;如下图&#xff1a;和这位朋友聊下来&#xff0c;发现他也是搞医疗的&#xff0c;哈哈&#xff0c;.NET 在医疗方面还是很有市场的????????????&…

android.mk ndk编译选项优化,Android NDK 编译脚本分析 之一

版权信息&#xff1a;本文为本人原创&#xff0c;欢迎转载&#xff0c;但请著明出处&#xff0c;并保留本版权信息。Android NDK编译脚本编写起来还是是比较简单条理的&#xff0c;然而它的语法和传统的linux GNU Make编译脚本的编写似乎有很大的不同&#xff0c;这让习惯了GNU…

丘成桐:完全不懂数学,才会有“数学无用”的说法

全世界有3.14 % 的人已经关注了数据与算法之美▲中国科学院院长白春礼&#xff08;右&#xff09;与数学家丘成桐&#xff08;左&#xff09;为晨兴数学金奖获得者李思&#xff08;中&#xff09;颁奖培养第一流的学生&#xff0c;首先要有对于学问的兴趣&#xff0c;而非奔着考…

Hadoop 2.0.0-alpha尝鲜安装和hello world

仅供测试学习的文章&#xff0c;不推荐在生产环境使用2.0&#xff0c;因为2.0采用YARN&#xff0c;hive&#xff0c;hbase&#xff0c;mahout等需要map/reduceV1的可能无法使用hadoop 2.0或者会出现意外情况。5月23日&#xff0c;apache发布了hadoop 2.0的测试版。正好跟家呆着…

动手实现一个适用于.NET Core 的诊断工具

前言大家可能对诊断工具并不陌生&#xff0c;从大名鼎鼎的 dotTrace&#xff0c;到 .NET CLI 推出的一系列的高效诊断组件&#xff08;dotnet trace,dotnet sos,dotnet dump&#xff09;等, 这些工具提升了对程序Debug的能力和效率&#xff0c;可以让开发人员从更高层次的维度来…

android 强制下线功能,Android学习之基础知识八—Android广播机制实践(实现强制下线功能)...

强制下线功能算是比较常见的了&#xff0c;很多的应用程序都具备这个功能&#xff0c;比如你的QQ号在别处登录了&#xff0c;就会将你强制挤下线。实现强制下线功能的思路比较简单&#xff0c;只需要在界面上弹出一个对话框&#xff0c;让用户无法进行任何操作&#xff0c;必须…

USB权限的设置

USB设备给我们日常生活中带了很多的方便&#xff0c;能够在不同的不同的移动设备中传递数据。但也给我们的数据安全带来了隐患&#xff0c;它可以拷贝走我们计算机中很机密的信息&#xff01;通过下面的操作后&#xff0c;将使我们有用的信息增加更大安全性&#xff0c;至小也能…

漫谈高数——泰勒级数的物理意义

全世界有3.14 % 的人已经关注了数据与算法之美高等数学干吗要研宄级数问题&#xff1f;是为了把简单的问题弄复杂来表明自己的高深&#xff1f; No,是为了把各种简单的问题/复杂的问题&#xff0c;他们的求解过程用一种通用的方法来表示。提一个问题&#xff0c;99*99等于多少&…

保持学习,从这几个公众号开始!

全世界有3.14 % 的人已经关注了数据与算法之美关注了几百个公众号无目的的看文章却如鸡肋一般食之无味弃之可惜你是否也觉得时间被浪费&#xff1f;生命被辜负了&#xff1f;点击关注下面几个公众号它们每天更新有态度、有温度的原创文字每一篇推文都值得你点开长按二维码&…