首先 我们需创建一个可以被序列化的类
using System.Xml.Serialization;
[System.Serializable]
public class TestXmlSerialize
{
//使用标签 节点属性
[XmlAttribute("Id")]
public int Id{get;set;}
[XmlAttribute("Name")]
public string Name{get; set;}
//使用这个标签 外面不会在包一层标签
[XmlElement("List")]
public List<int> List{get; set;}
}
//序列化
void SerilizaBegin()
{
TestXmlSerialize testXml = new TestXmlSerialize();
testXml.Id= 123;
testXml.Name=" testName " ;
testXml.List= new List<int>();
testXml.List.Add(1);
testXml.List.Add(2);
}
using System.IO;
using System.Xml.Serialization;
//序列化
void SerilizaClassBegin(TestXmlSerialize testSerilize)
{
string path = Application.dataPath+"/test.xml"
//参数 1 创建到哪个位置 2 文件类型(创建) 3
FileStream fileStream= new FileStream(path,FileMode.Create,FileAccess.ReadWrite,FileShare.ReadWrite);
//写入流文件
StreamWrite sw = new StreamWrite(fileStream,System.Text.Encoding.UTF8);
//写入xml 需要序列化的类型
XmlSerializer xml = new XmlSerizlizer(testSerilize.GetType());
//真正的序列化 参数 1 序列化到哪个文件中去 2 序列化的类对象
xml.Serialize(sw,testSerilize);
sw.Close();
fileStream.Close();
}
//读取xml 反向序列化
void XmlDeSerilize()
{
string path = Application.dataPath+"/test.xml"
//参数 1 创建到哪个位置 2 文件类型(创建) 3
FileStream fileStream= new FileStream(path,FileMode.Open,FileAccess.ReadWrite,FileShare.ReadWrite);
XmlSerializer xml = new XmlSerizlizer(typeof(TestXmlSerialize));
TestXmlSerialize serialize = (TestXmlSerialize)xml.Deserialize(fileStream);
fileStream.Close();
Debug.Log( serialize.Name );
}
void BinarySerTest()
{
TestXmlSerialize testXml = new TestXmlSerialize();
testXml.Id= 123456;
testXml.Name=" 二进制测试 " ;
testXml.List= new List<int>();
testXml.List.Add(15);
testXml.List.Add(29);
}
//序列化成二进制
void BinarySerilize(TestXmlSerialize serilize)
{
string path = Application.dataPath+"/test.bytes"
//参数 1 创建到哪个位置 2 文件类型(创建) 3
FileStream fileStream= new FileStream(path,FileMode.Create,FileAccess.ReadWrite,FileShare.ReadWrite);
//写入流文件
(using 命名空间)
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fileStream,serilize);
fileStream.Close();
}
//返回所需类型 正常读取字段
TestXmlSerialize BinaryDeserilize()
{
TextAsset textAsset= UnityEditor.AssetDatabase.LoadAssetAtPath<TextAsset>("Assets/test.bytes");
MsmoryStream stream = new MemoryStream(textAsset.bytes);
BinaryFormatter bf= new BinaryFormatter();
TestXmlSerialize serialize=(TestXmlSerialize) bf.Deserialize(stream);
stream.Close();
return serialize;
}
一个比较详细的Xml 介绍链接
https://www.cnblogs.com/guogangj/p/7489218.html