Unity XML的序列化和反序列化

来源:互联网 发布:浪漫庄园知乎 编辑:程序博客网 时间:2024/05/16 13:58

开始学习了,要不断的积累才能产生质变,加油吧!!!


今天学习一下XML的读取和写入,XML作为常用的数据存储,了解并掌握是必须的。

using UnityEngine;using System.Collections;using System.Text;using System.IO;using System.Xml;using System.Xml.Serialization;using System;/// <summary>/// XML序列化/// </summary>public class XMLUtils{    /// <summary>    /// 字节转string    /// </summary>    /// <param name="b">字节数组</param>    /// <returns></returns>    public static string UTF8ByteArrayToString(byte[] b)    {        UTF8Encoding encoding = new UTF8Encoding();        string s = encoding.GetString(b);        return (s);    }    /// <summary>    /// 字符串转字节数组    /// </summary>    /// <param name="s">字符内容</param>    /// <returns></returns>    public static byte[] StringToUTF8ByteArray(string s)    {        UTF8Encoding encoding = new UTF8Encoding();        byte[] b = encoding.GetBytes(s);        return b;    }    /// <summary>    /// 反序列化    /// </summary>    /// <param name="xmlString">string内容</param>    /// <param name="t">类型</param>    /// <returns></returns>    public static object DeserializeXML(string xmlString, Type t)    {        MemoryStream ms = new MemoryStream(StringToUTF8ByteArray(xmlString));        XmlSerializer xs = new XmlSerializer(t);        return xs.Deserialize(ms);    }    /// <summary>    /// 序列化--XML文件    /// </summary>    /// <param name="mObject">对象</param>    /// <param name="t">类型</param>    /// <param name="XMLPath">生成的xml路径</param>    public static void SerializeXML(object mObject, Type t, string XMLPath)    {        XmlWriterSettings xws = new XmlWriterSettings();        xws.Encoding = Encoding.UTF8;        XmlWriter xw = XmlWriter.Create(XMLPath, xws);        XmlSerializer xs = new XmlSerializer(t);        xs.Serialize(xw, mObject);    }    /// <summary>    /// 序列化--内存流    /// </summary>    /// <param name="mObject">对象</param>    /// <param name="t">类型</param>    /// <returns></returns>    public static string SerializeObject(object mObject, Type t)    {        MemoryStream ms = new MemoryStream();        XmlTextWriter xtw = new XmlTextWriter(ms, Encoding.UTF8);        XmlSerializer xs = new XmlSerializer(t);        xs.Serialize(xtw, mObject);        ms = (MemoryStream)xtw.BaseStream;        string xmlString = UTF8ByteArrayToString(ms.ToArray());        Debug.Log("" + xmlString);        return xmlString;    }}

1 0
原创粉丝点击