开始学习了,要不断的积累才能产生质变,加油吧!!!
今天学习一下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;
}
}