转载:http://blog.csdn.net/liuhe688/article/details/6415593
  1. XmlPullParser parser = Xml.newPullParser(); //由android.util.Xml创建一个XmlPullParser实例
  2. parser.setInput(is, "UTF-8");               //设置输入流 并指明编码方式
  3. int eventType = parser.getEventType();
  4. while (eventType != XmlPullParser.END_DOCUMENT) {
  5. switch (eventType) {
  6. case XmlPullParser.START_DOCUMENT:
  7. books = new ArrayList<Book>();
  8. break;
  9. case XmlPullParser.START_TAG:
  10. if (parser.getName().equals("book")) {
  11. book = new Book();
  12. } else if (parser.getName().equals("id")) {
  13. eventType = parser.next();
  14. book.setId(Integer.parseInt(parser.getText()));
  15. } else if (parser.getName().equals("name")) {
  16. eventType = parser.next();                //parser.getAttributeName(0) 当前标签内第0个属性的名称   parser.getAttributeValue(0)  当前标签内第0个属性对应的值
  17.                                                                 //parser.getAttributeValue("","name"); 得到当前标签内名称为name的值,默认为“”
  18. book.setName(parser.getText());
  19. } else if (parser.getName().equals("price")) {
  20. eventType = parser.next();
  21. book.setPrice(Float.parseFloat(parser.getText()));
  22. }
  23. break;
  24. case XmlPullParser.END_TAG:
  25. if (parser.getName().equals("book")) {
  26. books.add(book);
  27. book = null;
  28. }
  29. break;
  30. }
  31. eventType = parser.next();
  32. }
  33. return books;
  34. }
  35. @Override
  36. public String serialize(List<Book> books) throws Exception {
  37. //      XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
  38. //      XmlSerializer serializer = factory.newSerializer();
  39. XmlSerializer serializer = Xml.newSerializer(); //由android.util.Xml创建一个XmlSerializer实例
  40. StringWriter writer = new StringWriter();
  41. serializer.setOutput(writer);   //设置输出方向为writer
  42. serializer.startDocument("UTF-8", true);
  43. serializer.startTag("", "books");
  44. for (Book book : books) {
  45. serializer.startTag("", "book");
  46. serializer.attribute("", "id", book.getId() + "");
  47. serializer.startTag("", "name");
  48. serializer.text(book.getName());
  49. serializer.endTag("", "name");
  50. serializer.startTag("", "price");
  51. serializer.text(book.getPrice() + "");
  52. serializer.endTag("", "price");
  53. serializer.endTag("", "book");
  54. }
  55. serializer.endTag("", "books");
  56. serializer.endDocument();
  57. return writer.toString();
  58. }
  59. }

xml文件解析和序列化的更多相关文章

  1. Android -- 创建XML文件对象及其序列化, pull解析XML文件

    1. 创建XML文件对象及其序列化 示例代码:(模拟以xml格式备份短信到SD卡) SmsInfo.java, bean对象 /** * 短信的业务bean * @author Administrat ...

  2. 通过正则表达式实现简单xml文件解析

    这是我通过正则表达式实现的xml文件解析工具,有些XHTML文件中包含特殊符号,暂时还无法正常使用. 设计思路:常见的xml文件都是单根树结构,工具的目的是通过递归的方式将整个文档树装载进一个Node ...

  3. 八、Android学习第七天——XML文件解析方法(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 八.Android学习第七天——XML文件解析方法 XML文件:exten ...

  4. android基础知识13:AndroidManifest.xml文件解析

    注:本文转载于:http://blog.csdn.net/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...

  5. Android之AndroidManifest.xml文件解析

    转自:Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文 ...

  6. 9.XML文件解析

    一.XML简介 XML(EXtensible Markup Language),可扩展标记语言 特点:XML与操作系统.编程语言的开发平台无关 实现不同系统之间的数据交换 作用:数据交互 配置应用程序 ...

  7. Python实现XML文件解析

    1. XML简介 XML(eXtensible Markup Language)指可扩展标记语言,被设计用来传输和存储数据,已经日趋成为当前许多新生技术的核心,在不同的领域都有着不同的应用.它是web ...

  8. Python3将xml文件解析为Python对象

    一.说明 从最开始写javascript开始,我就很烦感使用getElementById()等函数来获取节点的方法,获取了一个节点要访问其子孙节点要么child半天要么就再来一个getElementB ...

  9. XML文件解析-DOM4J方式和SAX方式

    最近遇到的工作内容都是和xml内容解析相关的. 1图片数据以base64编码的方式保存在xml的一个标签中,xml文件通过接口的方式发送给我,然后我去解析出图片数据,对图片进行进一步处理. 2.xml ...

随机推荐

  1. POJ1226(strstr)

    Substrings Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13348   Accepted: 4722 Descr ...

  2. synergy的配置使用

    1.http://blog.csdn.net/qq_16618179/article/details/54094636 2.两个版本要一致 3.synergy  fail to connect sec ...

  3. float和Float的区别

    float是基本数据类型,Float是包装类(封装类).封装类可将接本数据类型封装后当作对象进行操作,并为各种基本数据类型提供各种转换功能.例如Float f = new Float(3.4f);,即 ...

  4. C++ 预处理指令 #pragma

    http://www.cnblogs.com/qinfengxiaoyue/archive/2012/06/05/2535524.html

  5. Flutter实战视频-移动电商-28.列表页_商品列表后台接口调试

    28.列表页_商品列表后台接口调试 主要调试商品列表页的接口 这个接口是最难的因为有大类.小类还有上拉加载 先配置接口 config/service_url.dart //const serviceU ...

  6. 实战分析一个运行起来会卡死的Go程序

    序言 最近一位非常热心的网友建议结合demo来分析一下goroutine的调度器,而且还提供了一个demo代码,于是便有了本文,在此对这位网友表示衷心的感谢! 这位网友提供的demo程序可能有的gop ...

  7. 洛谷 - P2051 - 中国象棋 - 简单dp

    https://www.luogu.org/problemnew/show/P2051 一点都不简单的简单dp. 还是从旧行转移到新行,而不是考虑新行从哪些旧行转移吧. #include<bit ...

  8. CodeForces 644B【模拟】

    题意: 查询数 和 最大的队列容量+1: 按时间顺序 ti代表,第i个出线的时间: di代表,第i个需要处理的时间: 对于第i个输出他所需要的时间完成,或者拒绝进入输出-1: 思路: 真是MDZZ了, ...

  9. windows7任务管理器内存相关列详细解释

    内存 - 工作集:私人工作集中的内存数量与进程正在使用且可以由其他进程共享的内存数量的总和.  内存 - 峰值工作集:进程所使用的工作集内存的最大数量.  内存 - 工作集增量:进程所使用的工作集内存 ...

  10. mongodb c# 序列化时 , Id引起的问题

    1.  c# 序列化时,如果没有指名_id , 如果class,struct有MemberName为 Id ,_id , 则自动识别为Id . 如果此时,这个"Id"是只读属性,就 ...