Замените ArrayOf * Root Element с помощью API-контроллера в Visual Studio C # - PullRequest
0 голосов
/ 01 октября 2018

Приношу свои извинения, если это дубликат, поскольку есть много похожих вопросов, но не совсем то, что я ищу.

Это то, что я написал:

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 на элемент документа и элемент цикла из отдела в элемент.

Iпытался добавить XmlArrayItem, XmlRoot, но продолжаю получать ошибки и / или продолжать видеть ArrayOf *

1 Ответ

0 голосов
/ 05 октября 2018

Извиняюсь за задержку ответа ... Я использовал данные из соединения 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;
        }
    }
}

Извлеченный урок состоял в том, что, насколько мне известно, вы не можете сериализовать метод и вам необходимо вносить свои корректировки в дальнейшем.

...