You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
2.7 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System.Xml;
using System.Xml.Linq;
using System.Xml.Serialization;
namespace Ds.Module.WeChat.Utilities
{
/// <summary>XML 工具类</summary>
public static class XmlUtility
{
/// <summary>反序列化</summary>
/// <param name="xml">XML字符串</param>
/// <returns></returns>
public static object Deserialize<T>(string xml)
{
try
{
using (StringReader stringReader = new StringReader(xml))
return new XmlSerializer(typeof(T)).Deserialize((TextReader)stringReader);
}
catch (Exception ex)
{
Console.WriteLine((object)ex);
return (object)null;
}
}
/// <summary>反序列化</summary>
/// <param name="stream"></param>
/// <returns></returns>
public static object Deserialize<T>(Stream stream) => new XmlSerializer(typeof(T)).Deserialize(stream);
/// <summary>
/// 序列化
/// 说明此方法序列化复杂类如果没有声明XmlInclude等特性可能会引发“使用 XmlInclude 或 SoapInclude 特性静态指定非已知的类型。”的错误。
/// </summary>
/// <param name="obj">对象</param>
/// <returns></returns>
public static string Serializer<T>(T obj)
{
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
try
{
xmlSerializer.Serialize((Stream)memoryStream, (object)obj);
}
catch (InvalidOperationException)
{
throw;
}
memoryStream.Position = 0L;
StreamReader streamReader = new StreamReader((Stream)memoryStream);
string end = streamReader.ReadToEnd();
streamReader.Dispose();
memoryStream.Dispose();
return end;
}
/// <summary>序列化将流转成XML字符串</summary>
/// <param name="stream"></param>
/// <returns></returns>
public static XDocument Convert(Stream stream)
{
if (stream.CanSeek)
stream.Seek(0L, SeekOrigin.Begin);
using (XmlReader reader = XmlReader.Create(stream))
return XDocument.Load(reader);
}
/// <summary>序列化将流转成XML字符串</summary>
/// <param name="stream"></param>
/// <returns></returns>
public static string ConvertToString(Stream stream)
{
StreamReader reader = new StreamReader(stream);
string sHtml = reader.ReadToEnd();
return sHtml;
}
}
}