/***********************************************************************
* Project: CoreCms
* ProjectName: 核心内容管理系统
* Web: https://www.corecms.net
* Author: 大灰灰
* Email: jianweie@163.com
* CreateTime: 2021/7/29 23:21:06
* Description: 暂无
***********************************************************************/
using System.Xml;
using System.Xml.Linq;
using System.Xml.Serialization;
namespace Zncy.CloudCar.WeChat.Service.Utilities
{
///
/// XML 工具类
///
public static class XmlUtility
{
/// 反序列化
/// XML字符串
///
public static object Deserialize(string xml)
{
try
{
using (StringReader stringReader = new StringReader(xml))
#pragma warning disable CS8603 // 可能返回 null 引用。
return new XmlSerializer(typeof(T)).Deserialize(stringReader);
#pragma warning restore CS8603 // 可能返回 null 引用。
}
catch (Exception ex)
{
Console.WriteLine(ex);
#pragma warning disable CS8603 // 可能返回 null 引用。
return null;
#pragma warning restore CS8603 // 可能返回 null 引用。
}
}
/// 反序列化
///
///
#pragma warning disable CS8603 // 可能返回 null 引用。
public static object Deserialize(Stream stream) => new XmlSerializer(typeof(T)).Deserialize(stream);
#pragma warning restore CS8603 // 可能返回 null 引用。
///
/// 序列化
/// 说明:此方法序列化复杂类,如果没有声明XmlInclude等特性,可能会引发“使用 XmlInclude 或 SoapInclude 特性静态指定非已知的类型。”的错误。
///
/// 对象
///
public static string Serializer(T obj)
{
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
try
{
xmlSerializer.Serialize(memoryStream, obj);
}
catch (InvalidOperationException)
{
throw;
}
memoryStream.Position = 0L;
StreamReader streamReader = new StreamReader(memoryStream);
string end = streamReader.ReadToEnd();
streamReader.Dispose();
memoryStream.Dispose();
return end;
}
/// 序列化将流转成XML字符串
///
///
public static XDocument Convert(Stream stream)
{
if (stream.CanSeek)
stream.Seek(0L, SeekOrigin.Begin);
using (XmlReader reader = XmlReader.Create(stream))
return XDocument.Load(reader);
}
/// 序列化将流转成XML字符串
///
///
public static string ConvertToString(Stream stream)
{
StreamReader reader = new StreamReader(stream);
string sHtml = reader.ReadToEnd();
return sHtml;
}
}
}