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