using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Linq;
|
using System.Reflection.PortableExecutable;
|
using System.Text;
|
using System.Threading.Tasks;
|
using System.Xml;
|
using System.Xml.Linq;
|
using System.Xml.Serialization;
|
|
namespace WIDESEA.Common
|
{
|
public class XMLSerializationTool
|
{
|
/// <summary>
|
/// 发序列化成对象
|
/// </summary>
|
/// <param name="type"></param>
|
/// <param name="xml"></param>
|
/// <returns></returns>
|
|
public static T DeserializeXmlToObject<T>(string receiveXml)
|
{
|
using (StreamReader reader = new StreamReader(
|
new MemoryStream(
|
Encoding.UTF8.GetBytes(receiveXml)),
|
Encoding.Default))
|
{
|
try
|
{
|
XmlSerializer serializer = new XmlSerializer(typeof(T));
|
T rel = (T)serializer.Deserialize(reader);
|
return rel;
|
}
|
finally { reader.Close(); }
|
}
|
}
|
|
//public static T DeserializeXmlToObjectBySub<T>(string receiveXml)
|
//{
|
// //XDocument document = XDocument.Load(receiveXml);
|
|
// //var jsondata = document.Descendants().Where(x => x.Name == "string" && x.Value.StartsWith("{") && x.Value.EndsWith("}")).First().Value;
|
|
// //receiveXml.Where(x => );
|
|
// //T json = JsonConvert.DeserializeObject<T>(jsondata);
|
|
// //return json;
|
// //T rel = (T)serializer.Deserialize(reader);
|
|
//}
|
|
/// <summary>
|
/// 序列化成xml文件格式
|
/// </summary>
|
/// <typeparam name="T"></typeparam>
|
/// <param name="obj"></param>
|
/// <returns></returns>
|
public static string SerializeObjectToXml<T>(T obj)
|
{
|
string rel = string.Empty;
|
|
using (MemoryStream ms = new MemoryStream())
|
{
|
try
|
{
|
//去掉默认的 xmlns标签
|
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
|
ns.Add("", "");
|
|
StreamWriter sw = new StreamWriter(ms);
|
//设置UTF-8
|
XmlWriterSettings settings = new XmlWriterSettings();
|
settings.Encoding = Encoding.UTF8;
|
settings.Indent = true;
|
using (XmlWriter writer = XmlWriter.Create(sw, settings))
|
{
|
XmlSerializer serializer = new XmlSerializer(typeof(T));
|
serializer.Serialize(writer, obj, ns);
|
writer.Flush();
|
writer.Close();
|
}
|
using (StreamReader sr = new StreamReader(ms))
|
{
|
ms.Position = 0;
|
rel = sr.ReadToEnd();
|
sr.Close();
|
}
|
}
|
finally
|
{
|
ms.Close();
|
}
|
}
|
|
////设置UTF-8
|
//XmlWriterSettings xws = new XmlWriterSettings();
|
//xws.Encoding = Encoding.UTF8;
|
//StringBuilder sb = new StringBuilder();
|
//XmlWriter xw = XmlWriter.Create(sb, xws);
|
|
|
//XmlSerializer xs = new XmlSerializer(typeof(T));
|
//xs.Serialize(xw, obj, ns);
|
//xw.Close();
|
return rel;
|
}
|
|
|
//public static string SerializeObjectToXml<T>(T obj)
|
//{
|
// string rel = string.Empty;
|
// using (MemoryStream storedStream = new MemoryStream())
|
// {
|
// try
|
// {
|
// //去掉默认的 xmlns标签
|
// XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
|
// ns.Add("", "");
|
|
// new XmlSerializer(typeof(T)).Serialize(storedStream, obj, ns);
|
// storedStream.Position = 0;
|
// using (StreamReader reader = new StreamReader(storedStream, Encoding.UTF8))
|
// {
|
// try { rel = reader.ReadToEnd(); }
|
// finally { reader.Close(); }
|
// }
|
// }
|
// finally { storedStream.Close(); }
|
// }
|
// return rel;
|
//}
|
}
|
}
|