unityzgy/Assets/Scripts/PublicTool/XmlHelper.cs
ayuan9957 bf12e02276 feat: 多语言本地化系统 - 支持中/英/法/俄实时切换
- LocalizationManager: 新增翻译表(SetFormatted/SetDuration/LocalizeOperateMsg)
- LoginPanel: InputField placeholder本地化、字体颜色保持
- HistoryPanel: 用时数据本地化、placeholder本地化
- RecordDetailPanel: 操作详情消息本地化(LanguageChanged重建)
- AppraiseWindowBase: 评价等级本地化、操作消息重建
- EditorAppraiser: 所有评估消息改用InjectOperateMsgLocalized
- StudentOperateRecorder: 新增InjectOperateMsgLocalized方法
- LocalizationLanguageTestBar: 单例模式、ScreenSpaceOverlay筛选
- 字体切换时保留颜色和verticalOverflow
2026-07-16 10:05:59 +08:00

95 lines
3.0 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using UnityEngine;
public static class XmlHelper
{
/// <summary>
/// 序列化--内存流
/// </summary>
/// <param name="pObject">对象</param>
/// <param name="t">类型</param>
/// <returns></returns>
public static string SerializeObject(object pObject, Type t)
{
string XmlizedString = null;
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(t);
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
xs.Serialize(xmlTextWriter, pObject);
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray());
//Debug.Log("" + XmlizedString);
return XmlizedString;
}
/// <summary>
/// 字节转string
/// </summary>
/// <param name="characters">字节数组</param>
/// <returns></returns>
private static string UTF8ByteArrayToString(byte[] characters)
{
UTF8Encoding encoding = new UTF8Encoding();
string constructedString = encoding.GetString(characters);
return (constructedString);
}
/// <summary>
/// 反序列化
/// </summary>
/// <param name="pXmlizedString">string内容</param>
/// <param name="t">类型</param>
/// <returns></returns>
public static object DeserializeObject(string filePath, Type t)
{
FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
XmlSerializer xs = new XmlSerializer(t);
//MemoryStream memoryStream = new MemoryStream(StringToUTF8ByteArray(fileStream));
//XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
return xs.Deserialize(fileStream);
}
/// <summary>
/// 字符串转字节数组
/// </summary>
/// <param name="pXmlString">字符内容</param>
/// <returns></returns>
private static byte[] StringToUTF8ByteArray(string pXmlString)
{
UTF8Encoding encoding = new UTF8Encoding();
byte[] byteArray = encoding.GetBytes(pXmlString);
return byteArray;
}
/// <summary>
/// 序列化--XML文件
/// </summary>
/// <param name="pObject">对象</param>
/// <param name="t">类型</param>
/// <param name="XMLPath">生成的xml路径</param>
public static bool SerializeObjectXML(object pObject, Type t, string XMLPath)
{
XmlWriterSettings ws = new XmlWriterSettings();
ws.Encoding = Encoding.UTF8;
try
{
XmlWriter xmTextWriter = XmlWriter.Create(XMLPath, ws);
XmlSerializer xmlFormat = new XmlSerializer(t);
xmlFormat.Serialize(xmTextWriter, pObject);
xmTextWriter.Close();
return true;
}
catch (Exception e)
{
Debug.Log(e.Message);
return false;
}
}
}