Android之XML序列化和解析

XML文件是一种常用的文件格式,可以用来存储与传递数据 ,本文是XML文件序列化与解析的一个简单示例

写文件到本地,并用XML格式存储

/*** 写xml文件到本地*/private void writeXmlToLocal() {List<Person> personList = getPersonList();// 获得序列化对象XmlSerializer serializer = Xml.newSerializer();try {File path = new File(Environment.getExternalStorageDirectory(), "persons.xml");FileOutputStream fos = new FileOutputStream(path);// 指定序列化对象输出的位置和编码serializer.setOutput(fos, "utf-8");serializer.startDocument("utf-8", true);    // 写开始 <?xml version='1.0' encoding='utf-8' standalone='yes' ?>serializer.startTag(null, "persons");       // <persons>for (Person person : personList) {// 开始写人serializer.startTag(null, "person");    // <person>serializer.attribute(null, "id", String.valueOf(person.getId()));// 写名字serializer.startTag(null, "name");      // <name>serializer.text(person.getName());serializer.endTag(null, "name");        // </name>// 写年龄serializer.startTag(null, "age");       // <age>serializer.text(String.valueOf(person.getAge()));serializer.endTag(null, "age");     // </age>serializer.endTag(null, "person");  // </person>}serializer.endTag(null, "persons");         // </persons>serializer.endDocument();       // 结束} catch (Exception e) {e.printStackTrace();}}private List<Person> getPersonList() {List<Person> personList = new ArrayList<Person>();for (int i = 0; i < 30; i++) {personList.add(new Person(i, "wang" + i, 18 + i));}return personList;}

XML解析实现

private List<Person> parserXmlFromLocal() {try {File path = new File(Environment.getExternalStorageDirectory(), "persons.xml");FileInputStream fis = new FileInputStream(path);// 获得pull解析器对象XmlPullParser parser = Xml.newPullParser();// 指定解析的文件和编码格式parser.setInput(fis, "utf-8");int eventType = parser.getEventType();      // 获得事件类型List<Person> personList = null;Person person = null;String id;while(eventType != XmlPullParser.END_DOCUMENT) {String tagName = parser.getName();  // 获得当前节点的名称switch (eventType) {case XmlPullParser.START_TAG:       // 当前等于开始节点  <person>if("persons".equals(tagName)) { // <persons>personList = new ArrayList<Person>();} else if("person".equals(tagName)) { // <person id="1">person = new Person();id = parser.getAttributeValue(null, "id");person.setId(Integer.valueOf(id));} else if("name".equals(tagName)) { // <name>person.setName(parser.nextText());} else if("age".equals(tagName)) { // <age>person.setAge(Integer.parseInt(parser.nextText()));}break;case XmlPullParser.END_TAG:     // </persons>if("person".equals(tagName)) {// 需要把上面设置好值的person对象添加到集合中personList.add(person);}break;default:break;}eventType = parser.next();      // 获得下一个事件类型}return personList;} catch (Exception e) {e.printStackTrace();}return null;}

测试结果

public class TestCase extends AndroidTestCase {public void test() {
//      writeXmlToLocal();List<Person> personList = parserXmlFromLocal();for (Person person : personList) {Log.i("TestCase", person.toString());}}

完成

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

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

相关文章

北京智控美信(长春)数据中心应聘总结

时间&#xff1a; 2012年9月12日 公司介绍&#xff1a; IT外包公司&#xff0c;提供咨询——开发——维护的整套服务。涉及金融、石油、电力等行业。 代表性项目&#xff1a; 吉林银行的先进性系统。 简历投递&#xff1a; 发送到邮箱&#xff1a;kd.hrinfohold.com.cn (注明应…

信息技术智库丨月度大考试

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

Android之查看网络图片和网页HTML

网络编程是Android应用中很重要的一部分&#xff0c;本文主要讲述了利用HttpURLConnection获取网络图片和HTML的方法。 获取网络图片 public class MainActivity extends Activity implements OnClickListener {private static final String TAG "MainActivity";p…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 20丨查询球队积分【难度中等】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

来博客园开了个博客

平时搜索资料也经常搜到博客园的文章&#xff0c;我一看&#xff0c;支持代码高亮&#xff0c;就注册了&#xff0c;也开了个。 以前辗转好多个博客&#xff0c;都没坚持&#xff0c;后来都废弃了。转载于:https://www.cnblogs.com/dyllen/archive/2013/01/31/2887383.html

智能交通大数据及云应用平台解决方案

来源&#xff1a;网络大数据摘要&#xff1a;随着日益增长的交通“大数据”&#xff0c;给交通管理创新带来的新挑战&#xff0c;以及对交通管理工作提出的新要求&#xff0c;交通信息化建设必然步入云计算智慧应用阶段&#xff0c;利用云计算破解当前诸多交通瓶颈问题。什么是…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 20丨查询结果的质量和占比【难度简单】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

Android之网络编程

本文主要包括三方面内容 Httpurlconnection中doGet与doPost方法实现提交数据到服务器HttpClient中doGet与doPost方法实现提交数据到服务器android-async-http开源库方法实现提交数据到服务器 首先是服务器端的实现 public class LoginServlet extends HttpServlet {/*** Th…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 21丨每个帖子的评论数【难度中等】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

获取当前程序运行的主机名称

#region 获取主机名称 /// <summary> /// 获取主机名称 返回如 www.baidu.com or www.baidu.com:8080 注意没有 http:// /// </summary> /// <returns></returns> public static string GetHttpHost() …

106项人工智能创新项目名单公布,唱响“智能化”主旋律

来源&#xff1a;专知摘要&#xff1a;9月5日&#xff0c;工信部官网公示了2018年人工智能与实体经济深度融合创新项目名单。9月5日&#xff0c;工信部官网公示了2018年人工智能与实体经济深度融合创新项目名单。据了解&#xff0c;2018年人工智能与实体经济深度融合创新项目名…

利用TabWidget实现底部菜单

TabWidget类似于通话记录的界面&#xff0c;通过切换多个标签从而显示出多个不同内容&#xff0c;能够展示内容丰富的页面信息&#xff0c;而且彼此之间不会干扰&#xff0c;有利于展示。下面&#xff0c;通过一个例子来学习用法 首先用一个类来继承TabActivity 在开发之前&a…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 21丨报告系统状态的连续日期【难度困难】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

MySQL Connector/ODBC 5.2.4 发布

MySQL 御用的 ODBC 驱动程序发布了 5.2.4 版本&#xff0c;下载地址&#xff1a; http://dev.mysql.com/downloads/connector/odbc/5.2.html 没有改进说明&#xff01; 转载于:https://www.cnblogs.com/shihao/archive/2013/02/06/2901851.html

信通院2018人工智能发展白皮书技术篇重磅发布

来源&#xff1a;网路大数据9月6日&#xff0c;2018中国人工智能峰会(CAIS2018)在南京国际博览会议中心召开。斯坦福客座教授吴恩达以Landng.ai创始人、CEO的身份出席了峰会&#xff0c;并在主论坛上做了题为《人工智能赋能新时代》的主题演讲。除了各路大咖的精彩演讲之外&…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 22丨页面推荐【难度中等】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

Python深入05 装饰器

作者&#xff1a;Vamei 出处&#xff1a;http://www.cnblogs.com/vamei 欢迎转载&#xff0c;也请保留这段声明。谢谢&#xff01; 装饰器(decorator)是一种高级Python语法。装饰器可以对一个函数、方法或者类进行加工。在Python中&#xff0c;我们有多种方法对函数和类进行加工…

Android之多线程断点下载

本文主要包含多线程下载的一些简单demo,包括三部分 java实现 android实现 XUtils开源库实现 注意下载添加网络权限与SD卡读写权限 java实现多线程下载 public class MutileThreadDownload {/*** 线程的数量*/private static int threadCount 3;/*** 每个下载区块的大小*/…

量子计算赛道上的巨头拉锯战

来源&#xff1a;网易智能据国外媒体报道&#xff0c;长期以来量子计算机一直被吹捧为功能强大得令人难以置信的机器。相比于世界上现有的计算机&#xff0c;量子计算机能够以更快的速度解决极其复杂的计算问题。但目前还没有就开发量子计算机的最佳方式达成一致。最终谁将赢得…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 22丨平均售价【难度中等】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…