我正在重写.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根元素映射到不同的类名?
你有什么试过,没有工作? –
我认为您需要用xml元素的名称来装饰CustomerSubmission类。我用自定义的json序列化/反序列化格式化程序做类似的事情。例如,你可以用传入的json prop的名字来装饰一个道具,所以我猜你可以用这个道具做一些事情。从来没有用xml做过。 看看这篇文章:http://stackoverflow.com/questions/31490563/deserialize-xml-using-same-object-with-different-element-name – DarthJam
@MarkC。我已经确认映射对xml起作用了,如果类和xml元素被命名为相同的,并且即使它们不同,它也适用于json。我试图寻找一个属性来装饰类,但最初没有把任何东西,因为我正在寻找错误的命名空间... –