【发布时间】:2014-10-07 04:03:40
【问题描述】:
我正在尝试通过 WebApi 方法将 XML 反序列化为对象。
我有以下课程:
[XmlRoot(IsNullable = false)]
public class MyObject
{
[XmlElement("Name")]
public string Name {get;set;}
}
以及 WebApi 控制器中的以下方法。
[HttpPost]
public HttpResponseMessage UpdateMyObject(MyObject model)
{
//do something with the model
}
我正在使用XmlSerializer,通过在 Web 项目的启动中设置以下内容:
config.Formatters.XmlFormatter.UseXmlSerializer = true;
当我发布以下 XML 时,model 被正确反序列化,我可以读取它的属性。
<?xml version="1.0" encoding="UTF-8"?>
<MyObject>
<Name>HelloWorld</Name>
</MyObject>
但是,当我发布带有 DOCTYPE 声明的 XML 时,model 值为 null,并且似乎没有在方法条目上反序列化。 IE。此 XML 不会反序列化为模型:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE MyObject SYSTEM "http://example.com/MyObject.dtd">
<MyObject>
<Name>HelloWorld</Name>
</MyObject>
希望有人能够提供帮助。
【问题讨论】:
标签: c# xml asp.net-web-api xml-serialization asp.net-web-api2