安卓数据存储补充:XML序列化

这篇具有很好参考价值的文章主要介绍了安卓数据存储补充:XML序列化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

序列化

  • 序列化是将对象状态转换为可保存或传输的格式的过程。我们可以把对象序列化为不同的格式,比如说:JSon序列化、XML序列化、二进制序列化等等,不同的形式适应不同的业务需求。

XML序列化

  • 把对象的成员变量转化为XML格式,需要使用Xml序列化器(XmlSerializer类),序列化之后的对象以XML文件的形式保存。
    public class Person {  
        private int id;  
        private String age;  
        private String name;  
    
        public int getId() {  
           return id;  
       }  
    
       public void setId(int id) {  
          this.id = id;  
       }  
    
       public String getAge() {  
          return age;  
       }  
    
       public void setAge(String age) {  
           this.age = age;  
       }  
    
       public String getName() {  
           return name;  
       }  
    
       public void setName(String name) {  
            this.name = name;  
       }  
    
       @Override  
       public String toString() {  
           return "Person [id=" + id + ", age=" + age + ", name=" + name + "]";  
       }  
    
    }
    
  • Person类,对应的该类有若干实例对象:{id=0;name=“张三”;age=20},{id=1;name=“李四”;age=19},把这些对象以xml格式进行描述,即为:
    <?xml version="1.0" encoding="UTF-8" standalone="true"?>
    <persons>
        <person id="0">
            <name>张三</name>
            <age>20</age>
        </person>
        <person id="1">
            <name>李四</name>
            <age>19</age>
        </person>
    </persons>
    
  • 要将数据序列化,首先要做的是创建与该XML相对应的序列化器,然后将Person对象转换为上述的XML格式

关键代码如下

  • 首先因为XML格式是以文件形式进行存放的,所以,应首先创建文件对象
    //Environment.getExternalStorageDirectory()为文件的存放位置
    File file = new File(Environment.getExternalStorageDirectory(),"Person.xml");
    
  • 然后,打开文件的输出流:
    //file为上面生成的文件对象
    FileOutputStream fos = new FileOutputStream(file);
    
  • 接着,创建与xml相对应的序列化器:
    XmlSerializer serializer = Xml.newSerializer();
    

通过序列化器对转换进行操作:文章来源地址https://www.toymoban.com/news/detail-499468.html

  • 设置文件编码方式:serializer.setOutput(fos,"utf-8");//fos为文件输出流对象
  • 写入xml文件的开始标签:serializer.startDocument("utf-8",true); 第一个参数设置文档的编码格式,第二个参数设置是否是一个独立的文档,一般设置为true
  • 依次写入各元素(如果有多个元素则可以使用迭代的方式写入,如果标签是嵌套的,则在写入顺序上也是嵌套的):
    1. 写入开始标签:serializer.startTag(null,"Persons"); 这里第一个参数为xml的命名空间,没有可以用null,第二个参数为标签名
    2. 如果该标签有属性:serializer.attribute(null,"id",1);其中第一个参数为命名空间,第二个参数是属性名,第三个参数为属性值
    3. 写入元素内容:serializer.text(person.getName());该参数为实例对象中的某个属性值
    4. 写入结束标签:serializer.endTag(null,"Persons");第一个参数为命名空间,一般为null即可,第二个参数为结束标签的标签名以这个语句表示文档的写入结束:serializer.endDocument()
    5. 通过serializer.flush()将流写入文件中
  • 最后,关闭输出流:fos.close()

到了这里,关于安卓数据存储补充:XML序列化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java万花筒】选择最适合您的数据序列化格式:比较 Avro、Protocol Buffers、JSON、XML、MessagePack和BSON

    在当今数据驱动的世界中,高效地处理和传输数据变得至关重要。选择合适的数据序列化格式对于数据存储、通信和处理的性能至关重要。本文将介绍并比较几种常用的数据序列化格式,包括Apache Avro、Protocol Buffers、JSON、XML、MessagePack和BSON。通过了解它们的概述、特点、应用

    2024年02月20日
    浏览(57)
  • 一文了解Java序列化和反序列化:对象的存储与传输

    Java序列化是一项强大而重要的技术,它允许我们将对象转换为字节流,以便在存储、传输和重建时使用。在本文中,我们将深入探讨Java序列化的基本概念、使用方法以及一些应用场景。 Java序列化是指将对象转换为字节流的过程,以便可以将其存储到文件、数据库或在网络上

    2024年02月13日
    浏览(36)
  • redis 中文存储的序列化配置

    redis 中文存储的序列化配置 为了解决 Redis 中文存储时出现的乱码问题,通常需要设置合适的序列化器。在 Spring Boot 应用中,使用 Jackson2JsonRedisSerializer 或 GenericJackson2JsonRedisSerializer 作为序列化器是一种常见的做法。这两种序列化器都会使用 UTF-8 编码,从而避免了中文乱码问

    2024年02月02日
    浏览(40)
  • 【rust/egui】(三)看看template的app.rs:序列化、持久化存储

    rust新手,egui没啥找到啥教程,这里自己记录下学习过程 环境:windows11 22H2 rust版本:rustc 1.71.1 egui版本:0.22.0 eframe版本:0.22.0 上一篇:这里 app.rs 中首先定义了我们的 TemplateApp 结构体 在定义 TemplateApp 时,我们让其继承了 serde::Deserialize, serde::Serialize 。 serde 是rust中用于序列

    2024年02月11日
    浏览(39)
  • 网络数据通信—ProtoBuf实现序列化和反序列化

    目录 前言 1.环境搭建 2. centos下编写的注意事项 3.约定双端交互接口 4.约定双端交互req/resp 5. 客户端代码实现 6.服务端代码实现 Protobuf还常用于通讯协议、服务端数据交换场景。那么在这个示例中,我们将实现一个网络版本的通讯录,模拟实现客户端与服务端的交互,通过P

    2024年02月04日
    浏览(44)
  • Unity Image(RawImage) 实现按轴心放大缩小,序列化存储轴心信息,实现编译器窗口保存轴心

    工作时分配给我的要实现的功能,写的时候遇到挺多的坑的,在此记录一下 放大缩小的效果 2.编译器扩展窗口记录 1.打开WSC/保存图片轴心工具,在Image位置挂在需要保存轴心的图像,输出name作为key,并在Scene窗口中直接拖动轴心确定位置(不建议在Inspector中手动输入轴心修改

    2024年02月14日
    浏览(49)
  • c++ 使用rapidjson对数据序列化和反序列化(vs2109)

      RapidJSON是腾讯开源的一个高效的C++ JSON解析器及生成器,它是只有头文件的C++库,综合性能是最好的。 1. 安装 在NuGet中为项目安装tencent.rapidjson 2. 引用头文件 #include rapidjson/document.h #include rapidjson/memorystream.h #include rapidjson/prettywriter.h 3. 头文件定义 添加测试json字符串和类型

    2024年02月07日
    浏览(38)
  • Flink 数据序列化

    大家都知道现在大数据生态非常火,大多数技术组件都是运行在 JVM 上的, Flink 也是运行在 JVM 上,基于 JVM 的数据分析引擎都需要将大量的数据存储在内存中,这就不得不面临 JVM 的一些问题,比如 Java 对象存储密度较低等。针对这些问题,最常用的方法就是实现一个显式的

    2024年02月04日
    浏览(77)
  • 【数据结构】二叉树篇|超清晰图解和详解:二叉树的序列化和反序列化

    博主简介: 努力学习的22级计算机科学与技术本科生一枚🌸 博主主页: @是瑶瑶子啦 每日一言🌼: 你不能要求一片海洋,没有风暴,那不是海洋,是泥塘——毕淑敏 🍊 序列化 :本质就是 二叉树的遍历 ,就那么几个:前序、中序、后序、层序。而序列化只不过就是 在遍历到

    2024年02月10日
    浏览(53)
  • python序列化和结构化数据详解

    序列化和结构化数据是计算机程序中非常重要的概念,它们的原理和应用在许多应用程序中都是必不可少的。Python作为一种高级编程语言,在序列化和结构化数据方面提供了很多优秀的解决方案。在本文中,我们将详细介绍Python中序列化和结构化数据的相关概念和应用。 1.

    2024年02月08日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包