2017-04-12 13 views
1

我正在重写.net核心中的API,该核心必须能够支持xml和json中的输入。我已经在我的启动类中添加了XmlSerializerFormatters。如何在.NET内核中将传入的XML绑定到不同名称的类

以前版本的API通过HTTP POST接收到名为“XMLObject”的模型的输入,并且发布到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根元素映射到不同的类名?

+0

你有什么试过,没有工作? –

+0

我认为您需要用xml元素的名称来装饰CustomerSubmission类。我用自定义的json序列化/反序列化格式化程序做类似的事情。例如,你可以用传入的json prop的名字来装饰一个道具,所以我猜你可以用这个道具做一些事情。从来没有用xml做过。 看看这篇文章:http://stackoverflow.com/questions/31490563/deserialize-xml-using-same-object-with-different-element-name – DarthJam

+0

@MarkC。我已经确认映射对xml起作用了,如果类和xml元素被命名为相同的,并且即使它们不同,它也适用于json。我试图寻找一个属性来装饰类,但最初没有把任何东西,因为我正在寻找错误的命名空间... –

回答

0

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

Deserialize Xml Using Same Object With Different Element Name

相关问题