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

1.XML文件的序列化

 void Start()
    {
        TestData Data = new TestData();
        Data.PlayerID = 1001;
        Data.PlayerName = "Test01";
        Data.WeaponID = new List<int>();
        Data.WeaponID.Add(1);
        Data.WeaponID.Add(2);
        XMLSerilize(Data);
    }

    void XMLSerilize(TestData data)
    {
        //创建文件流
        FileStream fileStream = new FileStream(Application.dataPath + "/TestXML.xml", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
        //写入流
        StreamWriter sw = new StreamWriter(fileStream, System.Text.Encoding.UTF8);
        //序列化对象
        XmlSerializer xml = new XmlSerializer(data.GetType());
        xml.Serialize(sw, data);
        sw.Close();
        fileStream.Close();
        AssetDatabase.Refresh();
    }

2.XML反序列化

 TestData XMLDeserilize()
    {
        FileStream fileStream = new FileStream(Application.dataPath + "/TestXML.xml", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
        XmlSerializer xml = new XmlSerializer(typeof(TestData));
        TestData data = (TestData)xml.Deserialize(fileStream);
        fileStream.Close();
        return data;
    }

数据类:

using System.Xml.Serialization;
[System.Serializable]
public class TestData 
{
    [XmlAttribute("PlayerID")]
    public int PlayerID { set; get; }
    [XmlAttribute("PlayerName")]
    public string PlayerName { set; get; }
    [XmlElement("WeaponID")]
    public List<int> WeaponID { set; get; }

   
}

3.二进制文件的序列化

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

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

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


    TestData BinaryDeserilize()
    {
        TextAsset textAsset = AssetDatabase.LoadAssetAtPath<TextAsset>("Assets/TestBinary.bytes");
        MemoryStream st = new MemoryStream(textAsset.bytes);
        BinaryFormatter bf = new BinaryFormatter();
        TestData data = (TestData)bf.Deserialize(st);
        st.Close();
        return data;
    }

发布了76 篇原创文章 · 获赞 43 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/hnzmdlhc/article/details/94412568