首页 > 解决方案 > 如何将 IFormfile XML 数据转换为 .Net Core 中的列表

问题描述

我正在尝试将 XML 文件从我的 Angular 应用程序发送到我的 ASP .Net Core 控制器。我希望控制器接收文件,然后将其反序列化为强类型的对象列表。解决这个问题的正确方法是什么?我目前在反序列化文件时收到错误消息,指出“根级别的数据无效。第 1 行,位置 1'。以下是我到目前为止所尝试的。

控制器:

    [HttpPost("reconciliation")]
    public async Task<IActionResult> SetReconciliation(IFormFile file)
    {
        List<ReconciliationExportCsv> records = new List<ReconciliationExportCsv>();
        XmlSerializer serializer = new XmlSerializer(typeof(List<ReconciliationExportCsv>));

        using (var reader = new StreamReader(file.OpenReadStream()))
        {
           records = (List<ReconciliationExportCsv>)serializer.Deserialize(reader);
        }

        var submitted = await _service.UploadReconciliationData(records);

        return Ok();
    }
}

模型:

public class ReconciliationExportCsv
{
    public string or1 { get; set; }
    public string exitStatus { get; set; }
    public string vendorState { get; set; }
   }
}

CSV:

在此处输入图像描述

标签: c#excelxmlasp.net-coredeserialization

解决方案


要将 IFormFile 转换为 XDocument,请使用如下语法:

public async Task<IActionResult> Upload(IFormFile input)
{
    using (MemoryStream str = new MemoryStream())
            {
                await input.CopyToAsync(str);
                str.Position = 0;
                var xml = XDocument.Load(str);
             }
}

然后您可以使用 XDocument 类方法来处理您的 xml


推荐阅读