XML和二进制文件的序列化和反序列化

小鱼儿 2021-12-19 01:19 371阅读 0赞

1.XML文件的序列化

  1. void Start()
  2. {
  3. TestData Data = new TestData();
  4. Data.PlayerID = 1001;
  5. Data.PlayerName = "Test01";
  6. Data.WeaponID = new List<int>();
  7. Data.WeaponID.Add(1);
  8. Data.WeaponID.Add(2);
  9. XMLSerilize(Data);
  10. }
  11. void XMLSerilize(TestData data)
  12. {
  13. //创建文件流
  14. FileStream fileStream = new FileStream(Application.dataPath + "/TestXML.xml", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
  15. //写入流
  16. StreamWriter sw = new StreamWriter(fileStream, System.Text.Encoding.UTF8);
  17. //序列化对象
  18. XmlSerializer xml = new XmlSerializer(data.GetType());
  19. xml.Serialize(sw, data);
  20. sw.Close();
  21. fileStream.Close();
  22. AssetDatabase.Refresh();
  23. }

2019070122524626.png

2.XML反序列化

  1. TestData XMLDeserilize()
  2. {
  3. FileStream fileStream = new FileStream(Application.dataPath + "/TestXML.xml", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
  4. XmlSerializer xml = new XmlSerializer(typeof(TestData));
  5. TestData data = (TestData)xml.Deserialize(fileStream);
  6. fileStream.Close();
  7. return data;
  8. }

20190701225709911.png

数据类:

  1. using System.Xml.Serialization;
  2. [System.Serializable]
  3. public class TestData
  4. {
  5. [XmlAttribute("PlayerID")]
  6. public int PlayerID { set; get; }
  7. [XmlAttribute("PlayerName")]
  8. public string PlayerName { set; get; }
  9. [XmlElement("WeaponID")]
  10. public List<int> WeaponID { set; get; }
  11. }

3.二进制文件的序列化

拿上面的数据类 来序列化二进制

  1. void BinarySerilize(TestData data)
  2. {
  3. FileStream fileStream = new FileStream(Application.dataPath + "/TestBinary.bytes", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
  4. BinaryFormatter bf = new BinaryFormatter();
  5. bf.Serialize(fileStream, data);
  6. fileStream.Close();
  7. }

20190701230235187.png

4.二进制文件的反序列化

  1. TestData BinaryDeserilize()
  2. {
  3. TextAsset textAsset = AssetDatabase.LoadAssetAtPath<TextAsset>("Assets/TestBinary.bytes");
  4. MemoryStream st = new MemoryStream(textAsset.bytes);
  5. BinaryFormatter bf = new BinaryFormatter();
  6. TestData data = (TestData)bf.Deserialize(st);
  7. st.Close();
  8. return data;
  9. }

20190701230735447.png

发表评论

表情:
评论列表 (有 0 条评论,371人围观)

还没有评论,来说两句吧...

相关阅读

    相关 序列序列

    序列化和反序列化   摘要   序列化和反序列化几乎是工程师们每天都要面对的事情,但是要精确掌握这两个概念并不容易:一方面,它们往往作为框架的一部分出现而湮没

    相关 序列序列

    个人学习理解 (只是自己默写序列化和反序列的代码以及几个问题) 1.序列化 和 反序列化 1.1 什么是序列化 和 反序列化 或者 你如何理解序列化和