Unity3D学习之数据持久化——XML

发布时间:2024年01月22日


1. 前言

在这里插入图片描述
在这里插入图片描述
最终达到的效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. XML 基本语法

2.1 固定语法(重要)

《!

2.2 注释

在这里插入图片描述

2.3 基本语法

在这里插入图片描述
树形结构
在这里插入图片描述

2.4 基本规则

在这里插入图片描述

2.5 xml 属性

在这里插入图片描述
属性通过空格隔开 属性名 = 引导包裹的内容
在这里插入图片描述
这两个代表的东西是一样的
在这里插入图片描述

2.6 验证语法错误

可以在菜鸟上使用xml验证器
xml验证器
在这里插入图片描述

2.7 C#对象和XML的手动转换

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3. C#读取存储XML

3.1 创建xml

在这里插入图片描述
在Resources文件夹创建一个xml文件
在这里插入图片描述

把文件再复制到streamingAsserts

3.2 C# 读取xml文件

3.2.1 通过Resources文件进行读取

在这里插入图片描述在这里插入图片描述

3.2.2 通过xml文件进行加载

在这里插入图片描述

在这里插入图片描述
获取根节点
在这里插入图片描述
在这里插入图片描述
遍历同名
在这里插入图片描述

在这里插入图片描述

3.3 C# 存储xml文件

3.3.1 存储在哪个文件夹

存储在 PersistentDataPath 可读可写

在这里插入图片描述

3.3.2 存储xml文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.4 C# 修改xml文件

先移除 再添加
在这里插入图片描述
两个方法得到子结点的子结点
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 XML 序列化

4.1 什么是序列化和反序列化

在这里插入图片描述

大概就是 把对象转化成可传输的字节顺序

4.2 xml 序列化

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这种序列化不能存储 private protect ,只能存public

也可以存数组 和list
在这里插入图片描述
在这里插入图片描述
不支持字典的序列化

4.3 自定义结点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5 xml 反序列化

在这里插入图片描述

5.1 判断文件是否存在

在这里插入图片描述

5.2 反序列化

在这里插入图片描述
这里会有问题,如果对象初始化了值,再反序列时,不会覆盖初始化值了的属性。所以会出现重复读取
所以最好不要对类进行初始化,

6 IXmlSerializeable 接口(自定义xmlSerializeable类)

在这里插入图片描述

在这里插入图片描述

6.1 继承 IXmlSerializable

在需要序列化的类继承IXmlSerializable
在这里插入图片描述
需要实现三个函数
在这里插入图片描述
第一个函数直接返回null就行
在这里插入图片描述

在函数中可以自定义序列化 的规则

6.2 WriteXml函数

6.2.1 存属性

在这里插入图片描述
在这里插入图片描述

6.2.2 存结点

在这里插入图片描述
在这里插入图片描述

6.2.3 写包裹结点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.3 ReadXml函数

6.3.1 读属性

在这里插入图片描述

6.3.2 读结点

方式1:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
读到test1

在这里插入图片描述
读到test2
在这里插入图片描述
方式2:
在这里插入图片描述

6.3.3 读包裹节点

在这里插入图片描述

6.4 让dictionary支持序列化反序列化

自定义一个dictionary,让其继承dictionary和 IXMLserializable

在这里插入图片描述

6.4.1 序列化

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

6.4.2 反序列化

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

7 xml数据管理类

在这里插入图片描述

在这里插入图片描述
测试类
在这里插入图片描述

7.1 存储

在这里插入图片描述

7.2 读取

在这里插入图片描述

文章来源:https://blog.csdn.net/Lmz_0314/article/details/135741234
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。