You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.4 KiB
49 lines
1.4 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Xml;
|
|
using System.Xml.Serialization;
|
|
|
|
namespace Shentun.Peis.PlugIns.Extensions
|
|
{
|
|
public class XmlHelper
|
|
{
|
|
public static string SerializeToXml<T>(T obj)
|
|
{
|
|
XmlSerializer serializer = new XmlSerializer(typeof(T));
|
|
using (StringWriter textWriter = new StringWriter())
|
|
{
|
|
serializer.Serialize(textWriter, obj);
|
|
return textWriter.ToString();
|
|
}
|
|
}
|
|
|
|
public static T DeserializeXml<T>(string xml)
|
|
{
|
|
var serializer = new XmlSerializer(typeof(T));
|
|
using var reader = new StringReader(xml);
|
|
return (T)serializer.Deserialize(reader);
|
|
}
|
|
|
|
public static T DeserializeXmlAddRoot<T>(string xml)
|
|
{
|
|
// 创建 XmlDocument 来修复 XML
|
|
var xmlDoc = new XmlDocument();
|
|
|
|
// 添加根元素
|
|
var root = xmlDoc.CreateElement("root");
|
|
|
|
// 加载原始内容到根元素中
|
|
root.InnerXml = xml;
|
|
xmlDoc.AppendChild(root);
|
|
|
|
// 转换为字符串
|
|
string fixedXml = xmlDoc.OuterXml;
|
|
var serializer = new XmlSerializer(typeof(T));
|
|
using var reader = new StringReader(fixedXml);
|
|
return (T)serializer.Deserialize(reader);
|
|
}
|
|
}
|
|
}
|