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

news2024/11/28 18:59:13

文章目录

  • 1. 前言
  • 2. XML 基本语法
    • 2.1 固定语法(重要)
    • 2.2 注释
    • 2.3 基本语法
    • 2.4 基本规则
    • 2.5 xml 属性
    • 2.6 验证语法错误
    • 2.7 C#对象和XML的手动转换
  • 3. C#读取存储XML
    • 3.1 创建xml
    • 3.2 C# 读取xml文件
      • 3.2.1 通过Resources文件进行读取
      • 3.2.2 通过xml文件进行加载
    • 3.3 C# 存储xml文件
      • 3.3.1 存储在哪个文件夹
      • 3.3.2 存储xml文件
    • 3.4 C# 修改xml文件
  • 4 XML 序列化
    • 4.1 什么是序列化和反序列化
    • 4.2 xml 序列化
    • 4.3 自定义结点
  • 5 xml 反序列化
    • 5.1 判断文件是否存在
    • 5.2 反序列化
  • 6 IXmlSerializeable 接口(自定义xmlSerializeable类)
    • 6.1 继承 IXmlSerializable
    • 6.2 WriteXml函数
      • 6.2.1 存属性
      • 6.2.2 存结点
      • 6.2.3 写包裹结点
    • 6.3 ReadXml函数
      • 6.3.1 读属性
      • 6.3.2 读结点
      • 6.3.3 读包裹节点
    • 6.4 让dictionary支持序列化反序列化
      • 6.4.1 序列化
      • 6.4.2 反序列化
  • 7 xml数据管理类
    • 7.1 存储
    • 7.2 读取


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 读取

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1403102.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux docker-compose安装失败解决

1.去github下载到本地 https://github.com/docker/compose/releases/ 2.上传到linux 服务器 mv dokcer-compose-linux-x86_64 /usr/loacal/bin/docker-compose 3.给权限 chmod x /usr/local/bin/docker-compose 4.查看是否安装成功 docker-compose -version 5.卸载 …

基于JAVA和微信小程序的智慧家政系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询家政服务4.2 新增单条服务订单4.3 新增留言反馈4.4 小程序登录4.5 小程序数据展示 五、免责说明 一、摘要 1.1 项目介绍 基于微信小程序JAVAVueSpringBootMySQL的智慧家政系统&#xff0…

Vue.js在养老院管理系统前端开发中的应用与优化

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

如何编写有效的WBS?

1. 项目WBS的定义和概念 项目WBS指的是工作分解结构(Work Breakdown Structure),是项目管理中一种重要的组织和规划工具。WBS通过将整个项目分解为可管理的、便于控制和监督的工作包或阶段,帮助项目团队清晰地理解项目的目标和任务,从而更好地进行项目计划和执行。WBS可以…

19万9的小米SU7已经彻底被否了

文 | AUTO芯球 作者 | 李诞 雷总 您是真不听劝啊 还要准备和米粉“干一架”啊 我和大家一样啊 这下好了 19万9的小米SU7已经彻底被否了 说实话 我心理真不是滋味 毕竟大家都说了, 9.9是雷爹,9万9是雷帝,15w是雷神 19万是雷总&#x…

单链表(C/C++)

本篇将给出单链表的实现,头部插入/删除,尾部插入/删除,元素查找,指定位置前插入数据,指定位置之后插入元素,删除当前元素,删除当前元素之后的元素。 在给出这些操作,先给出单链表的定…

Jupyter Notebook安装以及简单使用教程

Jupyter Notebook安装以及简单使用教程 本文章将,简要的讲解在已经拥有Python环境下如何进行Jupyter Notebook的安装。并且简短的介绍Jupyter Notebook的使用方法。 Jupyter Notebook是什么 Jupyter Notebook是一个基于Web的交互式计算环境,它支持多种…

1.21 day6 IO网络编程

网络聊天室 服务端 #include <myhead.h> #define PORT 8888 #define IP "192.168.122.48" struct MSG {char tyep;char name[20];char buf[128]; }; typedef struct Node {struct sockaddr_in cin;struct Node*next; }*node;int main(int argc, const char *…

【C++进阶07】哈希表and哈希桶

一、哈希概念 顺序结构以及平衡树中 元素关键码与存储位置没有对应关系 因此查找一个元素 必须经过关键码的多次比较 顺序查找时间复杂度为O(N) 平衡树中为树的高度&#xff0c;即O( l o g 2 N log_2 N log2​N) 搜索效率 搜索过程中元素的比较次数 理想的搜索方法&#xff1a…

如何一键生成原创文案?方法大揭密

在当今信息爆炸的时代&#xff0c;优秀的文案变得尤为重要。无论是网站、广告还是社交媒体&#xff0c;都需要吸引用户注意力的高质量、有吸引力的文案。不过&#xff0c;创作出这样的文案并不容易&#xff0c;需要投入大量的时间和精力。那么&#xff0c;有没有一种方法可以一…

Java 面向对象 06 对象内存图(黑马)

之前设计的如下图&#xff1a; 方法区和内存在物理上是一块的&#xff0c;但是有不好的地方&#xff0c;所以变成了这种形式&#xff1a; 一个对象的内存图&#xff1a; 在创建对象时虚拟机至少做了以下七步&#xff1a; 解释&#xff1a; 第一步&#xff1a; 第二步&#x…

视频格式转换软件,无忧转换畅享愉悦

在这个视频无处不在的时代&#xff0c;一款好的视频格式转换工具显得尤为重要。它不仅解决了你的燃眉之急&#xff0c;更让你畅享快速转换和简单操作带来的愉悦体验。现在就加入我们&#xff0c;开启全新的视频转换之旅吧&#xff01; 所需工具&#xff1a; 一个【媒体梦工厂…

【Leetcode】2788. 按分隔符拆分字符串

文章目录 题目思路代码 题目 题目链接 给你一个字符串数组 words 和一个字符 separator &#xff0c;请你按 separator 拆分 words 中的每个字符串。 返回一个由拆分后的新字符串组成的字符串数组&#xff0c;不包括空字符串 。 注意 separator 用于决定拆分发生的位置&#…

一区优化直接写:KOA-CNN-BiLSTM-Attention开普勒优化卷积、长短期记忆网络融合注意力机制的多变量回归预测程序!

适用平台&#xff1a;Matlab 2023版及以上 KOA开普勒优化算法&#xff0c;于2023年5月发表在SCI、中科院1区Top顶级期刊《Knowledge-Based Systems》上。 该算法提出时间很短&#xff0c;目前还没有套用这个算法的文献。 同样的&#xff0c;我们利用该新鲜出炉的算法对我们的…

Pandas--简介(1)

Pandas 简介 Pandas 是一个开源的数据分析和数据处理库&#xff0c;它是基于 Python 编程语言的。Pandas 提供了易于使用的数据结构和数据分析工具&#xff0c;特别适用于处理结构化数据&#xff0c;如表格型数据&#xff08;类似于Excel表格&#xff09;。Pandas 是数据科学和…

Spring boot项目java bean和xml互转

Spring boot项目实现java bean和xml互转 项目场景&#xff1a;互转方法使用jackson进行互转使用jaxws进行xml与bean的互转 搞定收工&#xff01; 项目场景&#xff1a; 工作中需要给下游第三方收费系统做数据挡板&#xff0c;由于下游系统使用的是soap webservice,里面涉及各种…

UE5 C++学习笔记 常用宏的再次理解

1.随意创建一个类&#xff0c;他都有UCLASS()。GENERATED_BODY()这样的默认的宏。 UCLASS() 告知虚幻引擎生成类的反射数据。类必须派生自UObject. &#xff08;告诉引擎我是从远古大帝UObject中&#xff0c;继承而来&#xff0c;我们是一家人&#xff0c;只是我进化了其他功能…

【C++修行之道】竞赛常用库函数(sort,min和max函数,min_element和max_element、nth_element)

目录 一、sort 1.1sort简介 语法 参数 功能 适用容器 1.2sort的用法 1.3自定义比较函数 示例 1265蓝桥题 —— 排序 二、min和max函数 三、min_element和max_element 497蓝桥题 —— 成绩分析 四、nth_element 一、sort 1.1sort简介 sort函数包含在头文件<a…

如何在WordPress中使用 AI 进行 SEO(12 个工具)

您想在 WordPress 中使用 AI 进行 SEO 吗&#xff1f; 人工智能正在对 SEO 行业产生重大影响。已经有优秀的人工智能 SEO 工具&#xff0c;您可以使用它们来提高您的 SEO 排名&#xff0c;而无需付出太多努力。 在本文中&#xff0c;我们将向您展示如何通过我们精心挑选的工具…

Qt 开发环境配置 vs和Qt creator

Qt 开发环境配置 vs和Qt creator 1、安装的软件 1、vs_Enterprise.exe 2、Qt creator (最好是最新的版本,低版本不支持vs2019) 下载地址&#xff1a;https://gofile-3535697530.cn1.quickconnect.cn/sharing/zMCh5ENgZ 密码&#xff1a;qt_dev 2、Qt Creator配置 1、打开…