Skip to content

Commit 44092d0

Browse files
Added XmlService
1 parent 8c89640 commit 44092d0

File tree

8 files changed

+58
-1
lines changed

8 files changed

+58
-1
lines changed

src/jQueryDatatableServerSideNetCore/Controllers/TestRegistersController.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,11 @@ await _exportService.ExportToExcel(resultList),
162162
return File(_exportService.ExportToJson(resultList),
163163
"application/json",
164164
"data.json");
165+
166+
case ExportFormat.Xml:
167+
return File(_exportService.ExportToXml(resultList),
168+
"application/xml",
169+
"data.xml");
165170
}
166171

167172
return null;

src/jQueryDatatableServerSideNetCore/Data/ExportFormat.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ public class ExportFormat
1212
public const string CsvDelimiter = ",";
1313
public const string Html = "html";
1414
public const string Json = "json";
15+
public const string Xml = "xml";
1516
}
1617
}

src/jQueryDatatableServerSideNetCore/Program.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using jQueryDatatableServerSideNetCore.Services.ExportService;
55
using jQueryDatatableServerSideNetCore.Services.HtmlService;
66
using jQueryDatatableServerSideNetCore.Services.JsonService;
7+
using jQueryDatatableServerSideNetCore.Services.XmlService;
78
using Microsoft.AspNetCore.Identity;
89
using Microsoft.EntityFrameworkCore;
910
using Microsoft.OpenApi.Models;
@@ -31,6 +32,7 @@
3132
builder.Services.AddScoped<ICsvService, CsvService>();
3233
builder.Services.AddScoped<IHtmlService, HtmlService>();
3334
builder.Services.AddScoped<IJsonService, JsonService>();
35+
builder.Services.AddScoped<IXmlService, XmlService>();
3436

3537
// Register the Swagger generator, defining 1 or more Swagger documents
3638
builder.Services.AddSwaggerGen(c =>

src/jQueryDatatableServerSideNetCore/Services/ExportService/ExportService.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using jQueryDatatableServerSideNetCore.Services.ExcelService;
44
using jQueryDatatableServerSideNetCore.Services.HtmlService;
55
using jQueryDatatableServerSideNetCore.Services.JsonService;
6+
using jQueryDatatableServerSideNetCore.Services.XmlService;
67

78
namespace jQueryDatatableServerSideNetCore.Services.ExportService
89
{
@@ -12,13 +13,15 @@ public class ExportService : IExportService
1213
private readonly ICsvService _csvService;
1314
private readonly IHtmlService _htmlService;
1415
private readonly IJsonService _jsonService;
16+
private readonly IXmlService _xmlService;
1517

16-
public ExportService(IExcelService excelService, ICsvService csvService, IHtmlService htmlService, IJsonService jsonService)
18+
public ExportService(IExcelService excelService, ICsvService csvService, IHtmlService htmlService, IJsonService jsonService, IXmlService xmlService)
1719
{
1820
_excelService = excelService;
1921
_csvService = csvService;
2022
_htmlService = htmlService;
2123
_jsonService = jsonService;
24+
_xmlService = xmlService;
2225
}
2326

2427
public async Task<byte[]> ExportToExcel(List<TestRegister> registers)
@@ -40,5 +43,10 @@ public byte[] ExportToJson(List<TestRegister> registers)
4043
{
4144
return _jsonService.Write(registers);
4245
}
46+
47+
public byte[] ExportToXml(List<TestRegister> registers)
48+
{
49+
return _xmlService.Write(registers);
50+
}
4351
}
4452
}

src/jQueryDatatableServerSideNetCore/Services/ExportService/IExportService.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,7 @@ public interface IExportService
1414
byte[] ExportToHtml(List<TestRegister> registers);
1515

1616
byte[] ExportToJson(List<TestRegister> registers);
17+
18+
byte[] ExportToXml(List<TestRegister> registers);
1719
}
1820
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace jQueryDatatableServerSideNetCore.Services.XmlService
2+
{
3+
public interface IXmlService
4+
{
5+
byte[] Write<T>(IList<T> registers);
6+
}
7+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using System.Text;
2+
using System.Xml.Serialization;
3+
4+
namespace jQueryDatatableServerSideNetCore.Services.XmlService
5+
{
6+
public class XmlService : IXmlService
7+
{
8+
public byte[] Write<T>(IList<T> registers)
9+
{
10+
var serializer = new XmlSerializer(typeof(List<T>));
11+
12+
using (MemoryStream memoryStream = new MemoryStream())
13+
{
14+
serializer.Serialize(memoryStream, registers);
15+
16+
return memoryStream.ToArray();
17+
}
18+
}
19+
}
20+
}

src/jQueryDatatableServerSideNetCore/wwwroot/js/app.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ $(document).ready(function () {
3939
action: function () {
4040
exportToJson();
4141
}
42+
},
43+
{
44+
text: 'XML',
45+
action: function () {
46+
exportToXml();
47+
}
4248
}
4349
],
4450
// Searching Setups
@@ -159,5 +165,11 @@ function exportToHtml() {
159165
function exportToJson() {
160166
renderDownloadForm("json");
161167

168+
$("#export-to-file-form").submit();
169+
}
170+
171+
function exportToXml() {
172+
renderDownloadForm("xml");
173+
162174
$("#export-to-file-form").submit();
163175
}

0 commit comments

Comments
 (0)