1
0
mirror of synced 2025-02-12 00:42:57 +01:00
GC-local-server-rewrite/Application/Common/Extensions/XmlSerializationExtensions.cs

57 lines
1.9 KiB
C#
Raw Normal View History

2023-02-16 16:53:02 +08:00
using System.Text;
2023-02-09 23:19:14 +08:00
using ChoETL;
2023-02-09 17:25:42 +08:00
using Throw;
2023-02-09 23:19:14 +08:00
namespace Application.Common.Extensions;
2023-02-09 17:25:42 +08:00
public static class XmlSerializationExtensions
{
public static T DeserializeCardData<T>(this string source) where T : class
{
using var reader = new ChoXmlReader<T>(new StringReader(source)).WithXPath("/root/data");
reader.Configuration.IgnoreFieldValueMode = ChoIgnoreFieldValueMode.Any;
2023-02-09 17:25:42 +08:00
var result = reader.Read();
result.ThrowIfNull();
return result;
}
2023-02-09 23:19:14 +08:00
public static string SerializeCardData<T>(this T source, string xpath) where T : class
{
var buffer = new StringBuilder();
using (var writer = new ChoXmlWriter<T>(buffer).WithXPath(xpath).UseXmlSerialization())
{
writer.Configuration.OmitXmlDeclaration = false;
writer.Configuration.DoNotEmitXmlNamespace = true;
writer.Write(source);
}
2023-02-09 23:19:14 +08:00
return buffer.ToString();
}
public static string SerializeCardData<T>(this T source) where T : class
{
var buffer = new StringBuilder();
using (var writer = new ChoXmlWriter<T>(buffer).UseXmlSerialization())
{
writer.Configuration.OmitXmlDeclaration = false;
writer.Configuration.DoNotEmitXmlNamespace = true;
writer.Configuration.IgnoreRootName = true;
writer.Write(source);
}
return buffer.ToString();
}
2023-02-09 23:19:14 +08:00
public static string SerializeCardDataList<T>(this IEnumerable<T> source, string xpath) where T : class
{
var buffer = new StringBuilder();
using (var writer = new ChoXmlWriter<T>(buffer).WithXPath(xpath).UseXmlSerialization())
{
writer.Configuration.OmitXmlDeclaration = false;
writer.Configuration.DoNotEmitXmlNamespace = true;
writer.Write(source);
}
2023-02-09 23:19:14 +08:00
return buffer.ToString();
}
2023-02-09 17:25:42 +08:00
}