Замените ArrayOf* Root Element с помощью API-контроллера в Visual Studio C#
Приношу свои извинения, если это дубликат, так как есть много похожих вопросов, но не совсем то, что я ищу.
Вот что я написал:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Xml.Serialization;
using DeptDataAccess;
namespace Basware_Web_Service.Controllers
{
public class DepartmentDataController : ApiController
{
public IEnumerable<Department> Get()
{
using (DeptDBEntities entities = new DeptDBEntities())
{
return entities.Departments.ToList();
}
}
Это то, что генерируется:
<ArrayOfDepartment xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/DeptDataAccess">
<Department>
<Company>TEST_CO</Company>
<ID>1</ID>
<Text_1>0</Text_1>
<Text_2>Sample_1</Text_2>
</Department>
<Department>
<Company>TEST_CO</Company>
<ID>2</ID>
<Text_1>1</Text_1>
<Text_2>Sample_2</Text_2>
</Department>
<!--Additional Department elements omitted-->
</ArrayOfDepartment>
То, что я пытаюсь сделать, это заменить корневой элемент из ArrayOfDeparment на элемент документа и элемент цикла из отдела в элемент.
Я пытался добавить XmlArrayItem, XmlRoot, но продолжаю получать ошибки и / или продолжать видеть ArrayOf*
1 ответ
Извиняюсь за задержку ответа... Данные, которые я использовал, были из соединения ADO.NET с моей базой данных SQL Server. Мои попытки сериализации массива никогда не сработали, поэтому я в итоге создал класс "ParsedDeptData" для сериализации и переопределения элементов для доставки.
Мой проанализированный класс данных в итоге выглядел так:
using DeptDataAccess;
using System.Xml.Serialization;
namespace TempNamespace.DepartmentPClass
{
[XmlType("DocumentElement")]
public class Items : List<Item>
{
public Items()
{
using (DeptDBEntities entities = new DeptDBEntities())
{
foreach (Department entity in entities.Departments)
{
Item item = new Item(entity);
this.Add(item);
}
}
}
}
public class Item
{
public int ID { get; set; }
public string Text_1 { get; set; }
public string Text_2 { get; set; }
public string Company { get; set; }
public Item()
{
this.ID = 0;
this.Text_1 = string.Empty;
this.Text_2 = string.Empty;
this.Company = string.Empty;
}
public Item(int id, string text_1, string text_2, string company)
{
this.ID = id;
this.Text_1 = text_1;
this.Text_2 = text_2;
this.Company = company;
}
public Item(Department entity)
{
this.ID = entity.ID;
this.Text_1 = entity.Text_1;
this.Text_2 = entity.Text_2;
this.Company = entity.Company;
}
}
}
Затем я настроил свой контроллер так:
namespace Basware_Web_Service.Controllers
{
public class DepartmentDataController : ApiController
{
public DepartmentPClass.Items Get()
{
DepartmentPClass.Items items = new DepartmentPClass.Items();
return items;
}
}
}
Извлеченный урок состоял в том, что, насколько мне известно, вы не можете сериализовать метод, и вам необходимо вносить свои коррективы в дальнейшем.