Mercurial > pub > ImplabNet
view Implab/Xml/SerializationHelpers.cs @ 273:79110a16cab7 v3
Working on Unity xml configuration: Refactoring in progress
author | cin |
---|---|
date | Thu, 26 Apr 2018 19:35:01 +0300 |
parents | 3a6e18c432be |
children | 6691aff01de1 |
line wrap: on
line source
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Xml; using System.Xml.Linq; using System.Xml.Serialization; namespace Implab.Xml { public static class SerializationHelpers { public static string SerializeAsString<T>(T obj) { return SerializersPool<T>.Instance.SerializeAsString(obj); } public static void Serialize<T>(XmlWriter writer, T obj) { SerializersPool<T>.Instance.Serialize(writer, obj); } public static XmlDocument SerializeAsXmlDocument<T>(T obj) { var doc = new XmlDocument(); using (var writer = doc.CreateNavigator().AppendChild()) { SerializersPool<T>.Instance.Serialize(writer, obj); } return doc; } public static XDocument SerializeAsXDocument<T>(T obj) { var doc = new XDocument(); using (var writer = doc.CreateWriter()) { SerializersPool<T>.Instance.Serialize(writer, obj); } return doc; } public static void SerializeToFile<T>(string file, T obj) { using (var writer = File.CreateText(file)) SerializersPool<T>.Instance.Serialize(writer, obj); } public static void SerializeToElementChild<T>(XmlElement element, T obj) { using(var writer = element.CreateNavigator().AppendChild()) SerializersPool<T>.Instance.Serialize(writer, obj); } public static T Deserialize<T>(XmlReader reader) { return SerializersPool<T>.Instance.Deserialize(reader); } public static T DeserializeFromFile<T>(string file) { using(var reader = XmlReader.Create(File.OpenText(file))) return Deserialize<T>(reader); } public static T DeserializeFromString<T>(string data) { return SerializersPool<T>.Instance.DeserializeFromString(data); } public static T DeserializeFromXmlNode<T>(XmlNode node) { Safe.ArgumentNotNull(node, nameof(node)); using (var reader = node.CreateNavigator().ReadSubtree()) return SerializersPool<T>.Instance.Deserialize(reader); } public static T DeserializeJson<T>(TextReader textReader) { var options = new JsonXmlReaderOptions { NamespaceUri = typeof(T).GetCustomAttribute<XmlRootAttribute>()?.Namespace, RootName = typeof(T).Name, FlattenArrays = true }; using(var reader = JsonXmlReader.CreateJsonXmlReader(textReader, options)) return Deserialize<T>(reader); } public static T DeserializeJsonFromString<T>(string data) { using(var reader = new StringReader(data)) { return DeserializeJson<T>(reader); } } public static void SerializeJson<T>(TextWriter writer, T obj) { var doc = SerializeAsXmlDocument(obj); XmlToJson.Default.Transform(doc, null, writer); } public static string SerializeJsonAsString<T>(T obj) { using(var writer = new StringWriter()) { SerializeJson(writer, obj); return writer.ToString(); } } } }