2017-04-12 15 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

相關問題