如何将传入的XML绑定到.Net核心中的不同命名的类

时间:2017-04-12 16:41:43

标签: c# xml asp.net-mvc asp.net-core model-binding

我正在重写.net核心中的API,它必须能够支持xml和json中的输入。我已经在我的启动类中添加了XmlSerializerFormatters。

以前版本的API通过HTTP POST接收到名为&#34; XMLObject&#34;的模型的输入,发布到API的XML具有根元素<XMLObject> - Json发布到API当然不需要命名的根元素。

在我的新版API中,我真的不想调用我的模型XMLObject - 出于我希望显而易见的原因 - 但仍希望支持使用<XMLObject>的XML作为根元素。

所以我要找的是这样的课程:

public class CustomerSubmission
{
    public string Id { get; set; }

    [Required]
    public string Submitter { get; set; }

    [Required]
    public string EncodedData { get; set; }
}

我的控制器中的方法是这样的:

[HttpPost( "submissionURL" )]
public async Task<IActionResult> PostSubmission( [FromBody] CustomerSubmission Incoming )
{
     //do something with Incoming.ID, Incoming.Submitter, etc...
}

然而仍然允许客户像这样发布XML:

<XMLObject>
    <Id>632174</Id>
    <Submitter>Lorem Ipsum PLC</Submitter>
    <EncodedData>7987428509348750983725.....</EncodedData>
</XMLObject>

我该怎么做?是否可以将xml根元素映射到不同的类名?

1 个答案:

答案 0 :(得分:0)

我认为您需要使用xml元素的名称来装饰CustomerSubmission类。我使用自定义json序列化/反序列化格式化程序做类似的事情。例如,你可以使用传入的json prop的名称来装饰道具,所以我猜你可以用它做点什么。从来没有用xml做过。看一下这篇文章:

Deserialize Xml Using Same Object With Different Element Name