【发布时间】:2019-09-23 13:21:10
【问题描述】:
body 的帖子有几种不同的 XML 传入。所有的 XMLS 几乎都是一样的,所以我先添加一个基类,其他 XMLS 继承自基类。
这是模型:
[XmlInclude(typeof(TextMsg))]
[XmlRoot("xml")]
public class BaseClass
{
public string ToUserName { get; set; }
public string FromUserName { get; set; }
public string CreateTime { get; set; }
public string MsgType { get; set; }
}
[XmlRoot("xml")]
public class TextMsg : BaseClass
{
public TextMsg()
{
MsgType = "text";
}
public string Content { get; set; }
public string MsgId { get; set; }
}
还有几个类也继承自基类模型,现在我在这里只展示一个。
方法如下:
[HttpPost]
[Produces("application/xml")]
public async Task<IActionResult> mp([FromBody]BaseClass XmlData)
{
BaseClass ReturnXmlData = null;
var a = XmlData.GetType();
return Ok(ReturnXmlData);
}
远程服务器将向我的服务器发布一个包含 XML 的请求。现在传入变量XmlData 只获取基类的值和类型。
我需要得到真正的值和类型,然后通过传入的类型和值返回不同的XML。
我该如何解决这个问题?谢谢。
这是传入的 XML 之一,匹配上面的 TextMsg 模型:
<xml>
<ToUserName>123</ToUserName>
<FromUserName>456</FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType>text</MsgType>
<Content>this is a test</Content>
<MsgId>1234567890123456</MsgId>
</xml>
【问题讨论】:
-
传入的 xml 是否包含一些告诉我们类型的属性?或者我们可以仅通过 xml 中的属性计数/名称来了解类型是什么?能否请添加一些可能的传入 xml 示例?
-
@Alexander 例如:
123 456 1348831860 text 这是一个测试 1234567890123456 -
@Alexander 这是另一个例子:
123 456 1348831860 image 这是一个网址 media_id 1234567890123456
标签: c# asp.net-core .net-core