android之XmlSerializer序列化XML(写入)

分类:android_数据增删查改2011-03-03 11:497437人阅读评论(2)收藏举报
androidxmlstringencodingnulllayout

首先,我们看一下什么是serializer,serializer就是串行化,又名序列化。它可并不只是简单的把对象保存在存储器上,它可以使我们在流中传输对象,使对象变的可以像基本数据一样传递。

最终效果图如上

现在粘贴主要代码:

main.xml

[xhtml]view plaincopy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:id="@+id/textView"
  11. />
  12. </LinearLayout>

activity的代码

[java]view plaincopy
  1. packagecn.com.xmlseriliazer;
  2. importjava.io.StringWriter;
  3. importjava.util.ArrayList;
  4. importorg.xmlpull.v1.XmlPullParserFactory;
  5. importorg.xmlpull.v1.XmlSerializer;
  6. importandroid.app.Activity;
  7. importandroid.os.Bundle;
  8. importandroid.widget.TextView;
  9. /**
  10. *
  11. *@authorchenzheng_java
  12. *@description测试通过XmlSerilizer生成xml文件
  13. *@since2011/03/03
  14. *
  15. */
  16. publicclassXmlSerializerActivityextendsActivity{
  17. @Override
  18. publicvoidonCreate(BundlesavedInstanceState){
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.main);
  21. Stringresult=produceXml();
  22. TextViewtextView=(TextView)this.findViewById(R.id.textView);
  23. textView.setText(result);
  24. }
  25. /**
  26. *
  27. *@return生成的xml文件的字符串表示
  28. */
  29. privateStringproduceXml(){
  30. StringWriterstringWriter=newStringWriter();
  31. ArrayList<Beauty>beautyList=getData();
  32. try{
  33. //获取XmlSerializer对象
  34. XmlPullParserFactoryfactory=XmlPullParserFactory.newInstance();
  35. XmlSerializerxmlSerializer=factory.newSerializer();
  36. //设置输出流对象
  37. xmlSerializer.setOutput(stringWriter);
  38. /*
  39. *startDocument(Stringencoding,Booleanstandalone)encoding代表编码方式
  40. *standalone用来表示该文件是否呼叫其它外部的文件。
  41. *若值是”yes”表示没有呼叫外部规则文件,若值是”no”则表示有呼叫外部规则文件。默认值是“yes”。
  42. */
  43. xmlSerializer.startDocument("utf-8",true);
  44. xmlSerializer.startTag(null,"beauties");
  45. for(Beautybeauty:beautyList){
  46. /*
  47. *startTag(Stringnamespace,Stringname)这里的namespace用于唯一标识xml标签
  48. *XML命名空间属性被放置于某个元素的开始标签之中,并使用以下的语法:
  49. xmlns:namespace-prefix="namespaceURI"
  50. 当一个命名空间被定义在某个元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。
  51. 注释:用于标示命名空间的地址不会被解析器用于查找信息。其惟一的作用是赋予命名空间一个惟一的名称。不过,很多公司常常会作为指针来使用命名空间指向某个实存的网页,这个网页包含着有关命名空间的信息。
  52. */
  53. xmlSerializer.startTag(null,"beauty");
  54. xmlSerializer.startTag(null,"name");
  55. xmlSerializer.text(beauty.getName());
  56. xmlSerializer.endTag(null,"name");
  57. xmlSerializer.startTag(null,"age");
  58. xmlSerializer.text(beauty.getAge());
  59. xmlSerializer.endTag(null,"age");
  60. xmlSerializer.endTag(null,"beauty");
  61. }
  62. xmlSerializer.endTag(null,"beauties");
  63. xmlSerializer.endDocument();
  64. }catch(Exceptione){
  65. e.printStackTrace();
  66. }
  67. returnstringWriter.toString();
  68. }
  69. /**
  70. *
  71. *@return包含了众多美女信息的集合
  72. */
  73. privateArrayList<Beauty>getData(){
  74. ArrayList<Beauty>beautyList=newArrayList<Beauty>();
  75. Beautyyangmi=newBeauty("杨幂","23");
  76. Beautylinzhiling=newBeauty("林志玲","28");
  77. beautyList.add(yangmi);
  78. beautyList.add(linzhiling);
  79. returnbeautyList;
  80. }
  81. /**
  82. *
  83. *@authorchenzheng_java
  84. *美人实体类
  85. */
  86. privateclassBeauty{
  87. Stringname;
  88. Stringage;
  89. publicStringgetName(){
  90. returnname;
  91. }
  92. publicvoidsetName(Stringname){
  93. this.name=name;
  94. }
  95. publicStringgetAge(){
  96. returnage;
  97. }
  98. publicvoidsetAge(Stringage){
  99. this.age=age;
  100. }
  101. @Override
  102. publicStringtoString(){
  103. return"Beauty[age="+age+",name="+name+"]";
  104. }
  105. publicBeauty(Stringname,Stringage){
  106. this.name=name;
  107. this.age=age;
  108. }
  109. publicBeauty(){
  110. }
  111. }
  112. }

其他都为默认。

由代码我们可以看到,其实使用xmlserializer生成xml也是相当容易的。基本的步骤和解析xml差不多。这里就不多说话了。详情请看api。

首先,我们看一下什么是serializer,serializer就是串行化,又名序列化。它可并不只是简单的把对象保存在存储器上,它可以使我们在流中传输对象,使对象变的可以像基本数据一样传递。

最终效果图如上

现在粘贴主要代码:

main.xml

[xhtml]view plaincopy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:id="@+id/textView"
  11. />
  12. </LinearLayout>

activity的代码

[java]view plaincopy
  1. packagecn.com.xmlseriliazer;
  2. importjava.io.StringWriter;
  3. importjava.util.ArrayList;
  4. importorg.xmlpull.v1.XmlPullParserFactory;
  5. importorg.xmlpull.v1.XmlSerializer;
  6. importandroid.app.Activity;
  7. importandroid.os.Bundle;
  8. importandroid.widget.TextView;
  9. /**
  10. *
  11. *@authorchenzheng_java
  12. *@description测试通过XmlSerilizer生成xml文件
  13. *@since2011/03/03
  14. *
  15. */
  16. publicclassXmlSerializerActivityextendsActivity{
  17. @Override
  18. publicvoidonCreate(BundlesavedInstanceState){
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.main);
  21. Stringresult=produceXml();
  22. TextViewtextView=(TextView)this.findViewById(R.id.textView);
  23. textView.setText(result);
  24. }
  25. /**
  26. *
  27. *@return生成的xml文件的字符串表示
  28. */
  29. privateStringproduceXml(){
  30. StringWriterstringWriter=newStringWriter();
  31. ArrayList<Beauty>beautyList=getData();
  32. try{
  33. //获取XmlSerializer对象
  34. XmlPullParserFactoryfactory=XmlPullParserFactory.newInstance();
  35. XmlSerializerxmlSerializer=factory.newSerializer();
  36. //设置输出流对象
  37. xmlSerializer.setOutput(stringWriter);
  38. /*
  39. *startDocument(Stringencoding,Booleanstandalone)encoding代表编码方式
  40. *standalone用来表示该文件是否呼叫其它外部的文件。
  41. *若值是”yes”表示没有呼叫外部规则文件,若值是”no”则表示有呼叫外部规则文件。默认值是“yes”。
  42. */
  43. xmlSerializer.startDocument("utf-8",true);
  44. xmlSerializer.startTag(null,"beauties");
  45. for(Beautybeauty:beautyList){
  46. /*
  47. *startTag(Stringnamespace,Stringname)这里的namespace用于唯一标识xml标签
  48. *XML命名空间属性被放置于某个元素的开始标签之中,并使用以下的语法:
  49. xmlns:namespace-prefix="namespaceURI"
  50. 当一个命名空间被定义在某个元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。
  51. 注释:用于标示命名空间的地址不会被解析器用于查找信息。其惟一的作用是赋予命名空间一个惟一的名称。不过,很多公司常常会作为指针来使用命名空间指向某个实存的网页,这个网页包含着有关命名空间的信息。
  52. */
  53. xmlSerializer.startTag(null,"beauty");
  54. xmlSerializer.startTag(null,"name");
  55. xmlSerializer.text(beauty.getName());
  56. xmlSerializer.endTag(null,"name");
  57. xmlSerializer.startTag(null,"age");
  58. xmlSerializer.text(beauty.getAge());
  59. xmlSerializer.endTag(null,"age");
  60. xmlSerializer.endTag(null,"beauty");
  61. }
  62. xmlSerializer.endTag(null,"beauties");
  63. xmlSerializer.endDocument();
  64. }catch(Exceptione){
  65. e.printStackTrace();
  66. }
  67. returnstringWriter.toString();
  68. }
  69. /**
  70. *
  71. *@return包含了众多美女信息的集合
  72. */
  73. privateArrayList<Beauty>getData(){
  74. ArrayList<Beauty>beautyList=newArrayList<Beauty>();
  75. Beautyyangmi=newBeauty("杨幂","23");
  76. Beautylinzhiling=newBeauty("林志玲","28");
  77. beautyList.add(yangmi);
  78. beautyList.add(linzhiling);
  79. returnbeautyList;
  80. }
  81. /**
  82. *
  83. *@authorchenzheng_java
  84. *美人实体类
  85. */
  86. privateclassBeauty{
  87. Stringname;
  88. Stringage;
  89. publicStringgetName(){
  90. returnname;
  91. }
  92. publicvoidsetName(Stringname){
  93. this.name=name;
  94. }
  95. publicStringgetAge(){
  96. returnage;
  97. }
  98. publicvoidsetAge(Stringage){
  99. this.age=age;
  100. }
  101. @Override
  102. publicStringtoString(){
  103. return"Beauty[age="+age+",name="+name+"]";
  104. }
  105. publicBeauty(Stringname,Stringage){
  106. this.name=name;
  107. this.age=age;
  108. }
  109. publicBeauty(){
  110. }
  111. }
  112. }

其他都为默认。

由代码我们可以看到,其实使用xmlserializer生成xml也是相当容易的。基本的步骤和解析xml差不多。这里就不多说话了。详情请看api。

android之XmlSerializer序列化XML(写入) android之XmlSerializer序列化XML(写入)...相关推荐

  1. XmlSerializer保存xml文件android

    保存成功后的的文件: 代码: package com.glsite.savexmlinfo;import android.Manifest; import android.os.Environment ...

  2. xml 和android脚本之家,Android利用Document实现xml读取和写入操作

    本文实例为大家分享了利用Document实现xml读取和写入操作,供大家参考,具体内容如下 首先先来介绍一下什么xml?xml是可扩展标记语言,他可以用来标记数据,定义数据类型.是一种允许用户对自己标 ...

  3. android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

  4. 如何自己开发一个Android APP(3)——XML和Android

    XML是一种用于保存数据值的语言. XML是一种标记语言,类似于HTML--如果之前接触过Web开发的话.XML文件利用树状结构作为数据模型.通常来说,一个布局文件拥有一个根布局元素,并将其作为特定布 ...

  5. android 改python,如何正确的用python修改AndroidManifest.xml(史上最详细教程)

    写在前面的话 AndroidManifest.xml这个文件如果你搞过android相关的东西(如果没搞过,我希望你去搞一下), 你一定很熟悉. 我们在工作可能会有一些动态修改或者获取manifest ...

  6. android 序列化传参数,Android序列化之Parcelable和Serializable的使用详解

    序列化与反序列 首先来了解一下序列化与反序列化. 序列化 由于存在于内存中的对象都是暂时的,无法长期驻存,为了把对象的状态保持下来,这时需要把对象写入到磁盘或者其他介质中,这个过程就叫做序列化. 反序 ...

  7. android 序列化存储对象,android中对象序列化存储

    项目中要存储一些数据为了提高不必要的网络请求,提高效率,用到数据持久化的知识点,针对这个问题,解决办法其实有很多,以前在项目中是服务获取到webservice的xml,然后直接将xml保存在本地,之后 ...

  8. android对象序列化的方法,Android 进阶-两种序列化方式 Serializable 和 Parcelable

    [导读]序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区中读取或反序列化对象的状态 ...

  9. android 序列化传参数,android 传值 序列化

    Activity之间传数据时,为了避免麻烦,往往会将一些值封装成对象,然后将整个对象传递过去.传对象的时候有两种情况,一种是实现Parcelable接口,一种是实现Serializable接口. 0. ...

  10. Android运行时候报错:android.view.InflateException: Binary XML file line #19: Binary XML file lin

    Android运行时候报错:android.view.InflateException: Binary XML file line #19: Binary XML file lin 这个问题自己大致在 ...

最新文章

  1. Leangoo敏捷开发项目管理软件-工作日志
  2. bzoj 5339 [TJOI2018]教科书般的亵渎 拉格朗日插值
  3. DCMTK:可加载的DICOM数据字典
  4. C++ 的多态性与虚函数
  5. 2016光伏创新如何突围融资困境?
  6. 大学生英语fif测试系统_英语听力解题技巧
  7. 欧几里德算法求最大公约数
  8. 颈椎病分型及对症治疗
  9. 一个STM32编译Makefile模板
  10. python运用列表编写水仙花数_Python 实现找出所有水仙花数的方法
  11. 风控必须了解的报表权限与角色控制
  12. Best Coder Round#25 1003 树的非递归访问
  13. python 模块之 bisect
  14. 基于置信加权池的全卷积保证颜色恒常性
  15. html5小白——html5基础(简单个人博客模板)
  16. 微分方程_偏微分方程
  17. k8s pod分类、核心组件、网络模型、kubectl常用命令
  18. APP跟网址最常见的攻击和防守
  19. 工作经费的开支范围_科研经费使用范围及说明
  20. 2的0次方为什么等于1?

热门文章

  1. 痞子衡嵌入式:ARM Cortex-M文件那些事(1)- 源文件(.c/.h/.s)
  2. 洛谷——P1680 奇怪的分组
  3. 国际电联秘书长特别代表杨晓雅:2020年全球将接入500亿物联网终端
  4. 企业级应用的前端思考。
  5. 黄聪:mysql 存在该记录则更新,不存在则插入记录的sql
  6. EVEREST Ultimate Edition 4.50 Build 1330 Final
  7. 企业级微服务框架 NutzBoot 2.3.0.v20190220 发布
  8. win10系统下安装Linux虚拟机以及在虚拟机上安装Ubuntu
  9. Clojure的并发(七)pmap、pvalues和pcalls
  10. [OpenGL] glColor 和 glClearColor 区别