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
{
///
/// 发序列化成对象
///
///
///
///
public static T DeserializeXmlToObject(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(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(jsondata);
// //return json;
// //T rel = (T)serializer.Deserialize(reader);
//}
///
/// 序列化成xml文件格式
///
///
///
///
public static string SerializeObjectToXml(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 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;
//}
}
}