如何将传入的 XML 绑定到 .Net 核心中的不同名称的 class
How to bind incoming XML to a differently named class in .Net core
我正在.net core 中重写一个API,它必须能够支持xml 和json 中的输入。我已经在我的启动 class.
中添加了 XmlSerializerFormatters
API 的先前版本通过 HTTP POST 接收到名为“XMLObject
”的模型的输入,并且 XML posted到 API 有根元素 <XMLObject>
- Json post 到 API 当然不需要命名的根元素。
在我的新版本 API 中,我真的不想称呼我的模型 XMLObject
- 原因我希望很明显 - 但仍然愿意支持 XML以 <XMLObject>
作为根元素。
所以我正在寻找的是 class 这样的:
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...
}
但仍然允许客户像这样 post XML :
<XMLObject>
<Id>632174</Id>
<Submitter>Lorem Ipsum PLC</Submitter>
<EncodedData>7987428509348750983725.....</EncodedData>
</XMLObject>
我该怎么做?是否可以将 xml 根元素映射到不同的 class 名称?
我认为您需要使用 xml 元素的名称修饰 CustomerSubmission class。我用自定义 json serialisation/deserialisation 格式化程序做类似的事情。例如,您可以使用传入的 json 道具的名称装饰一个道具,所以我想您可以用它来做一些事情。虽然从来没有用 xml 做过。看看这个post:
是的,这是可能的。您可以对 class 使用 [XmlRoot("YourClassName")]
,对字段使用 [XmlElement("ORDER_LIST")]
。
我正在.net core 中重写一个API,它必须能够支持xml 和json 中的输入。我已经在我的启动 class.
中添加了 XmlSerializerFormattersAPI 的先前版本通过 HTTP POST 接收到名为“XMLObject
”的模型的输入,并且 XML posted到 API 有根元素 <XMLObject>
- Json post 到 API 当然不需要命名的根元素。
在我的新版本 API 中,我真的不想称呼我的模型 XMLObject
- 原因我希望很明显 - 但仍然愿意支持 XML以 <XMLObject>
作为根元素。
所以我正在寻找的是 class 这样的:
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...
}
但仍然允许客户像这样 post XML :
<XMLObject>
<Id>632174</Id>
<Submitter>Lorem Ipsum PLC</Submitter>
<EncodedData>7987428509348750983725.....</EncodedData>
</XMLObject>
我该怎么做?是否可以将 xml 根元素映射到不同的 class 名称?
我认为您需要使用 xml 元素的名称修饰 CustomerSubmission class。我用自定义 json serialisation/deserialisation 格式化程序做类似的事情。例如,您可以使用传入的 json 道具的名称装饰一个道具,所以我想您可以用它来做一些事情。虽然从来没有用 xml 做过。看看这个post:
是的,这是可能的。您可以对 class 使用 [XmlRoot("YourClassName")]
,对字段使用 [XmlElement("ORDER_LIST")]
。