Web API - Dynamic XML Serialization

I am writing a web API web service that returns a dynamically generated property package. Is there any working serializer or way how to serialize dynamics to XML? I tried to find any useful suggestions, but did not find anything useful.

+6
source share
1 answer

We solved this by creating our own XML formatter.

This is not an ideal solution, but it works.

At Global.asax

 GlobalConfiguration.Configuration.Formatters.Add(new CustomXmlFormatter()); GlobalConfiguration.Configuration.Formatters .Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter); 

Create a new class called CustomXmlFormatter

 using System; using System.IO; using System.Net.Http.Formatting; using System.Net.Http.Headers; using System.Threading.Tasks; using Newtonsoft.Json; namespace EMP.WebServices.api.Formatters { public class CustomXmlFormatter : MediaTypeFormatter { public CustomXmlFormatter() { SupportedMediaTypes.Add( new MediaTypeHeaderValue("application/xml")); SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/xml")); } public override bool CanReadType(Type type) { if (type == (Type)null) throw new ArgumentNullException("type"); return true; } public override bool CanWriteType(Type type) { return true; } public override Task WriteToStreamAsync(Type type, object value, Stream writeStream, System.Net.Http.HttpContent content, System.Net.TransportContext transportContext) { return Task.Factory.StartNew(() => { var json = JsonConvert.SerializeObject(value); var xml = JsonConvert .DeserializeXmlNode("{\"Root\":" + json + "}", ""); xml.Save(writeStream); }); } } } 
+18
source

Source: https://habr.com/ru/post/954377/


All Articles