XML的序列化与反序列化

第一步:定义一个可序列化的类
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Xml.Serialization;

[System.Serializable]
public class TestSerilize
{

[XmlAttribute("Id")]
public int Id
{
    get;
    set;
}
[XmlAttribute("Name")]
public string Name
{
    get;
    set;
}
[XmlElement("List")]
public List<int> List
{
    get;
    set;
}

}在这里插入图片描述第二步 序列化
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System.Xml.Serialization;

public class ResourceTest : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{

    SerilizeTist();
}

// Update is called once per frame
void SerilizeTist()
{
    TestSerilize testSerilize = new TestSerilize();
    testSerilize.Id = 1;
    testSerilize.Name = "测试";
    testSerilize.List = new List<int>();
    testSerilize.List.Add(2);
    testSerilize.List.Add(3);
    XmlSerilize(testSerilize);

}
//序列化
void XmlSerilize(TestSerilize testSerilize)
{
    //文件流
    FileStream fileStream = new FileStream(Application.dataPath + "/test.xml", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
    //写入流文件
    StreamWriter sw = new StreamWriter(fileStream, System.Text.Encoding.UTF8);
    //序列化   获取类型
    XmlSerializer xml = new XmlSerializer(testSerilize.GetType());
    xml.Serialize(sw, testSerilize);
    sw.Close();
    fileStream.Close();
}

在这里插入图片描述
第三部 :反序列化
//反序列化
TestSerilize XmlDeSerlize()
{
FileStream fs = new FileStream(Application.dataPath + “/test.xml”, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
XmlSerializer xs = new XmlSerializer(typeof(TestSerilize));
//反向序列化
TestSerilize testSerilize = (TestSerilize)xs.Deserialize(fs);
fs.Close();

    return testSerilize;
}
void DeSerilizerTest()
{
    TestSerilize testSerilize = XmlDeSerlize();
    Debug.Log(testSerilize.Id + "  " + testSerilize.Name);
    if (testSerilize != null)
    {
        foreach (int a in testSerilize.List)
        {
            Debug.Log(a);
        }
    }
}

反序列化的时候在这里插入图片描述
反序列化的时候千万不要忘记在 start 中调用DeSerilizerTest方法哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值