Здравствуйте нужно передать вот такой такой XML документ
<tlist>
<t>
<ScheduleId>12254</ScheduleId>
...
</t>
<t>
<ScheduleId>333333</ScheduleId>
...
</t>
</tlist>
Добавил поддержку "application/xml" services.AddXmlSerializerFormatters()
[HttpPost]
[Produces("application/xml")]
public void Post([FromBody] ТипДляПриемаDto trainsList)
{
}
Создал тип TrainDto и вернул List через GET запрос, получилось так:
public class TrainDto
{
public int ScheduleId { get; set; }
}
<ArrayOfTrainDto xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<TrainDto>
<ScheduleId>0</ScheduleId>
</TrainDto>
</ArrayOfTrainDto>
То есть коллекция объектов оборачивается в тег <ArrayOf...>
в обработчике по умолчанию.
Подскажите как написать свой обработчик XML или придется принимать XML как строку и самому парсить?
ArrayOfTrainDto у вас вышло исключительно потому что это корневой элемент, и для него неоткуда взять имя кроме как из типа данных. Если вам нужно особое имя - вам нужен особый тип данных.
XML Serializer можно настраивать с помощью атрибутов:
[XmlRoot("tlist")]
public class TrainsDtoContainer
{
[XmlElement("t")]
public List<TrainDto> Trains { get; set; } = new List<TrainDto>();
}
Замечу, что отдельный тип-контейнер нужен только для ситуации "массив в корне". Для массивов в других местах контейнер можно создать через XmlArrayAttribute (еще он будет создан по умолчанию если вообще не использовать атрибутов):
[XmlRoot("root")]
public class SomeAnotherDto
{
[XmlArray("tlist"), XmlArrayItem("t")]
public List<TrainDto> Trains { get; set; } = new List<TrainDto>();
}
Но, вообще говоря, сложные xml-документы обычно описываются при помощи xsd-схемы. По такой схеме можно автоматически получить все нужные классы с помощью xsd.exe
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите пожалуйста, как правильнее организовать? Есть код который выводит данные из таблицы:
Задача: создать на Laravel + Frozennode админ панель для сайта, чтобы никто не мог регистрироватьсяПодкиньте пару примеров или литературу