xmlとjsonの両方で入力をサポートできる必要がある.netコアでAPIを書き直しています。私は既にスタートアップクラスに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ルート要素を別のクラス名にマップすることは可能ですか?
これはうまくいかなかったのですか? –
CustomerSubmissionクラスをxml要素の名前で飾る必要があると思います。私は、カスタムJSONシリアライズ/デシリアライズフォーマッタで同様のことを行います。例えば、あなたはそれが何かをすることができると思いますので、入っているjsonの小道具の名前で小道具を飾ることができます。しかし、XMLでそれをやったことはありません。 この投稿を見てください:http://stackoverflow.com/questions/31490563/deserialize-xml-using-same-object-with-different-element-name – DarthJam
@ MarkC。クラスとxml要素の名前が同じで、異なる場合でもjsonのために働いていれば、マッピングがxml okで機能することを確認しました。私はクラスを装飾する属性を探してみましたが、最初は間違った名前空間を探していたので、何も変えていませんでした。 –