android之XmlSerializer序列化XML(写入) android之XmlSerializer序列化XML(写入)...
android之XmlSerializer序列化XML(写入)
首先,我们看一下什么是serializer,serializer就是串行化,又名序列化。它可并不只是简单的把对象保存在存储器上,它可以使我们在流中传输对象,使对象变的可以像基本数据一样传递。
最终效果图如上
现在粘贴主要代码:
main.xml
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:id="@+id/textView"
- />
- </LinearLayout>
activity的代码
- packagecn.com.xmlseriliazer;
- importjava.io.StringWriter;
- importjava.util.ArrayList;
- importorg.xmlpull.v1.XmlPullParserFactory;
- importorg.xmlpull.v1.XmlSerializer;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importandroid.widget.TextView;
- /**
- *
- *@authorchenzheng_java
- *@description测试通过XmlSerilizer生成xml文件
- *@since2011/03/03
- *
- */
- publicclassXmlSerializerActivityextendsActivity{
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Stringresult=produceXml();
- TextViewtextView=(TextView)this.findViewById(R.id.textView);
- textView.setText(result);
- }
- /**
- *
- *@return生成的xml文件的字符串表示
- */
- privateStringproduceXml(){
- StringWriterstringWriter=newStringWriter();
- ArrayList<Beauty>beautyList=getData();
- try{
- //获取XmlSerializer对象
- XmlPullParserFactoryfactory=XmlPullParserFactory.newInstance();
- XmlSerializerxmlSerializer=factory.newSerializer();
- //设置输出流对象
- xmlSerializer.setOutput(stringWriter);
- /*
- *startDocument(Stringencoding,Booleanstandalone)encoding代表编码方式
- *standalone用来表示该文件是否呼叫其它外部的文件。
- *若值是”yes”表示没有呼叫外部规则文件,若值是”no”则表示有呼叫外部规则文件。默认值是“yes”。
- */
- xmlSerializer.startDocument("utf-8",true);
- xmlSerializer.startTag(null,"beauties");
- for(Beautybeauty:beautyList){
- /*
- *startTag(Stringnamespace,Stringname)这里的namespace用于唯一标识xml标签
- *XML命名空间属性被放置于某个元素的开始标签之中,并使用以下的语法:
- xmlns:namespace-prefix="namespaceURI"
- 当一个命名空间被定义在某个元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。
- 注释:用于标示命名空间的地址不会被解析器用于查找信息。其惟一的作用是赋予命名空间一个惟一的名称。不过,很多公司常常会作为指针来使用命名空间指向某个实存的网页,这个网页包含着有关命名空间的信息。
- */
- xmlSerializer.startTag(null,"beauty");
- xmlSerializer.startTag(null,"name");
- xmlSerializer.text(beauty.getName());
- xmlSerializer.endTag(null,"name");
- xmlSerializer.startTag(null,"age");
- xmlSerializer.text(beauty.getAge());
- xmlSerializer.endTag(null,"age");
- xmlSerializer.endTag(null,"beauty");
- }
- xmlSerializer.endTag(null,"beauties");
- xmlSerializer.endDocument();
- }catch(Exceptione){
- e.printStackTrace();
- }
- returnstringWriter.toString();
- }
- /**
- *
- *@return包含了众多美女信息的集合
- */
- privateArrayList<Beauty>getData(){
- ArrayList<Beauty>beautyList=newArrayList<Beauty>();
- Beautyyangmi=newBeauty("杨幂","23");
- Beautylinzhiling=newBeauty("林志玲","28");
- beautyList.add(yangmi);
- beautyList.add(linzhiling);
- returnbeautyList;
- }
- /**
- *
- *@authorchenzheng_java
- *美人实体类
- */
- privateclassBeauty{
- Stringname;
- Stringage;
- publicStringgetName(){
- returnname;
- }
- publicvoidsetName(Stringname){
- this.name=name;
- }
- publicStringgetAge(){
- returnage;
- }
- publicvoidsetAge(Stringage){
- this.age=age;
- }
- @Override
- publicStringtoString(){
- return"Beauty[age="+age+",name="+name+"]";
- }
- publicBeauty(Stringname,Stringage){
- this.name=name;
- this.age=age;
- }
- publicBeauty(){
- }
- }
- }
其他都为默认。
由代码我们可以看到,其实使用xmlserializer生成xml也是相当容易的。基本的步骤和解析xml差不多。这里就不多说话了。详情请看api。
首先,我们看一下什么是serializer,serializer就是串行化,又名序列化。它可并不只是简单的把对象保存在存储器上,它可以使我们在流中传输对象,使对象变的可以像基本数据一样传递。
最终效果图如上
现在粘贴主要代码:
main.xml
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:id="@+id/textView"
- />
- </LinearLayout>
activity的代码
- packagecn.com.xmlseriliazer;
- importjava.io.StringWriter;
- importjava.util.ArrayList;
- importorg.xmlpull.v1.XmlPullParserFactory;
- importorg.xmlpull.v1.XmlSerializer;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importandroid.widget.TextView;
- /**
- *
- *@authorchenzheng_java
- *@description测试通过XmlSerilizer生成xml文件
- *@since2011/03/03
- *
- */
- publicclassXmlSerializerActivityextendsActivity{
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Stringresult=produceXml();
- TextViewtextView=(TextView)this.findViewById(R.id.textView);
- textView.setText(result);
- }
- /**
- *
- *@return生成的xml文件的字符串表示
- */
- privateStringproduceXml(){
- StringWriterstringWriter=newStringWriter();
- ArrayList<Beauty>beautyList=getData();
- try{
- //获取XmlSerializer对象
- XmlPullParserFactoryfactory=XmlPullParserFactory.newInstance();
- XmlSerializerxmlSerializer=factory.newSerializer();
- //设置输出流对象
- xmlSerializer.setOutput(stringWriter);
- /*
- *startDocument(Stringencoding,Booleanstandalone)encoding代表编码方式
- *standalone用来表示该文件是否呼叫其它外部的文件。
- *若值是”yes”表示没有呼叫外部规则文件,若值是”no”则表示有呼叫外部规则文件。默认值是“yes”。
- */
- xmlSerializer.startDocument("utf-8",true);
- xmlSerializer.startTag(null,"beauties");
- for(Beautybeauty:beautyList){
- /*
- *startTag(Stringnamespace,Stringname)这里的namespace用于唯一标识xml标签
- *XML命名空间属性被放置于某个元素的开始标签之中,并使用以下的语法:
- xmlns:namespace-prefix="namespaceURI"
- 当一个命名空间被定义在某个元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。
- 注释:用于标示命名空间的地址不会被解析器用于查找信息。其惟一的作用是赋予命名空间一个惟一的名称。不过,很多公司常常会作为指针来使用命名空间指向某个实存的网页,这个网页包含着有关命名空间的信息。
- */
- xmlSerializer.startTag(null,"beauty");
- xmlSerializer.startTag(null,"name");
- xmlSerializer.text(beauty.getName());
- xmlSerializer.endTag(null,"name");
- xmlSerializer.startTag(null,"age");
- xmlSerializer.text(beauty.getAge());
- xmlSerializer.endTag(null,"age");
- xmlSerializer.endTag(null,"beauty");
- }
- xmlSerializer.endTag(null,"beauties");
- xmlSerializer.endDocument();
- }catch(Exceptione){
- e.printStackTrace();
- }
- returnstringWriter.toString();
- }
- /**
- *
- *@return包含了众多美女信息的集合
- */
- privateArrayList<Beauty>getData(){
- ArrayList<Beauty>beautyList=newArrayList<Beauty>();
- Beautyyangmi=newBeauty("杨幂","23");
- Beautylinzhiling=newBeauty("林志玲","28");
- beautyList.add(yangmi);
- beautyList.add(linzhiling);
- returnbeautyList;
- }
- /**
- *
- *@authorchenzheng_java
- *美人实体类
- */
- privateclassBeauty{
- Stringname;
- Stringage;
- publicStringgetName(){
- returnname;
- }
- publicvoidsetName(Stringname){
- this.name=name;
- }
- publicStringgetAge(){
- returnage;
- }
- publicvoidsetAge(Stringage){
- this.age=age;
- }
- @Override
- publicStringtoString(){
- return"Beauty[age="+age+",name="+name+"]";
- }
- publicBeauty(Stringname,Stringage){
- this.name=name;
- this.age=age;
- }
- publicBeauty(){
- }
- }
- }
其他都为默认。
由代码我们可以看到,其实使用xmlserializer生成xml也是相当容易的。基本的步骤和解析xml差不多。这里就不多说话了。详情请看api。
android之XmlSerializer序列化XML(写入) android之XmlSerializer序列化XML(写入)...相关推荐
- XmlSerializer保存xml文件android
保存成功后的的文件: 代码: package com.glsite.savexmlinfo;import android.Manifest; import android.os.Environment ...
- xml 和android脚本之家,Android利用Document实现xml读取和写入操作
本文实例为大家分享了利用Document实现xml读取和写入操作,供大家参考,具体内容如下 首先先来介绍一下什么xml?xml是可扩展标记语言,他可以用来标记数据,定义数据类型.是一种允许用户对自己标 ...
- android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- 如何自己开发一个Android APP(3)——XML和Android
XML是一种用于保存数据值的语言. XML是一种标记语言,类似于HTML--如果之前接触过Web开发的话.XML文件利用树状结构作为数据模型.通常来说,一个布局文件拥有一个根布局元素,并将其作为特定布 ...
- android 改python,如何正确的用python修改AndroidManifest.xml(史上最详细教程)
写在前面的话 AndroidManifest.xml这个文件如果你搞过android相关的东西(如果没搞过,我希望你去搞一下), 你一定很熟悉. 我们在工作可能会有一些动态修改或者获取manifest ...
- android 序列化传参数,Android序列化之Parcelable和Serializable的使用详解
序列化与反序列 首先来了解一下序列化与反序列化. 序列化 由于存在于内存中的对象都是暂时的,无法长期驻存,为了把对象的状态保持下来,这时需要把对象写入到磁盘或者其他介质中,这个过程就叫做序列化. 反序 ...
- android 序列化存储对象,android中对象序列化存储
项目中要存储一些数据为了提高不必要的网络请求,提高效率,用到数据持久化的知识点,针对这个问题,解决办法其实有很多,以前在项目中是服务获取到webservice的xml,然后直接将xml保存在本地,之后 ...
- android对象序列化的方法,Android 进阶-两种序列化方式 Serializable 和 Parcelable
[导读]序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区中读取或反序列化对象的状态 ...
- android 序列化传参数,android 传值 序列化
Activity之间传数据时,为了避免麻烦,往往会将一些值封装成对象,然后将整个对象传递过去.传对象的时候有两种情况,一种是实现Parcelable接口,一种是实现Serializable接口. 0. ...
- 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 这个问题自己大致在 ...
最新文章
- Leangoo敏捷开发项目管理软件-工作日志
- bzoj 5339 [TJOI2018]教科书般的亵渎 拉格朗日插值
- DCMTK:可加载的DICOM数据字典
- C++ 的多态性与虚函数
- 2016光伏创新如何突围融资困境?
- 大学生英语fif测试系统_英语听力解题技巧
- 欧几里德算法求最大公约数
- 颈椎病分型及对症治疗
- 一个STM32编译Makefile模板
- python运用列表编写水仙花数_Python 实现找出所有水仙花数的方法
- 风控必须了解的报表权限与角色控制
- Best Coder Round#25 1003 树的非递归访问
- python 模块之 bisect
- 基于置信加权池的全卷积保证颜色恒常性
- html5小白——html5基础(简单个人博客模板)
- 微分方程_偏微分方程
- k8s pod分类、核心组件、网络模型、kubectl常用命令
- APP跟网址最常见的攻击和防守
- 工作经费的开支范围_科研经费使用范围及说明
- 2的0次方为什么等于1?
热门文章
- 痞子衡嵌入式:ARM Cortex-M文件那些事(1)- 源文件(.c/.h/.s)
- 洛谷——P1680 奇怪的分组
- 国际电联秘书长特别代表杨晓雅:2020年全球将接入500亿物联网终端
- 企业级应用的前端思考。
- 黄聪:mysql 存在该记录则更新,不存在则插入记录的sql
- EVEREST Ultimate Edition 4.50 Build 1330 Final
- 企业级微服务框架 NutzBoot 2.3.0.v20190220 发布
- win10系统下安装Linux虚拟机以及在虚拟机上安装Ubuntu
- Clojure的并发(七)pmap、pvalues和pcalls
- [OpenGL] glColor 和 glClearColor 区别