開始學習了,要不斷的積累才能產生質變,加油吧!!!
今天學習一下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;
}
}