diff --git a/Controllers/ResponseEnricher.cs b/Controllers/ResponseEnricher.cs index 1e6147c..32ef4cb 100644 --- a/Controllers/ResponseEnricher.cs +++ b/Controllers/ResponseEnricher.cs @@ -38,25 +38,12 @@ public static class Responses public static FileStreamHttpResult RespondXml(this ControllerBase controller, T obj, string fileName = "Data.xml") { - var stream = new MemoryStream(); - //use utf8 encoding - var serializer = new XmlSerializer(typeof(T)); - var settings = new XmlWriterSettings - { - Indent = true, - Encoding = Encoding.UTF8, - }; - + var stream = Utils.Xml.Serialize(obj); //Console.Writeline(stream.Length); + stream.Seek(0, SeekOrigin.Begin); - using (var writer = XmlWriter.Create(stream, settings)) - { - serializer.Serialize(writer, obj); - //Console.Writeline(stream.Length); - stream.Seek(0, SeekOrigin.Begin); + controller.Response.Headers.Add("Content-Disposition", "inline; filename=" + fileName); + return TypedResults.File(stream, "text/xml", fileName); - controller.Response.Headers.Add("Content-Disposition", "inline; filename=" + fileName); - return TypedResults.File(stream, "text/xml", fileName); - } } } \ No newline at end of file diff --git a/Utils/Xml.cs b/Utils/Xml.cs new file mode 100644 index 0000000..8ea26a6 --- /dev/null +++ b/Utils/Xml.cs @@ -0,0 +1,30 @@ + +using System.Text; +using System.Xml; +using System.Xml.Serialization; + +namespace NejCommon.Utils; + +public static class Xml{ + public static Stream Serialize(T obj){ + var stream = new MemoryStream(); + //use utf8 encoding + var serializer = new XmlSerializer(typeof(T)); + var settings = new XmlWriterSettings + { + Indent = true, + Encoding = Encoding.UTF8, + }; + + //Console.Writeline(stream.Length); + + using (var writer = XmlWriter.Create(stream, settings)) + { + serializer.Serialize(writer, obj); + //Console.Writeline(stream.Length); + stream.Seek(0, SeekOrigin.Begin); + + return stream; + } + } +} \ No newline at end of file