1 回答
TA贡献1874条经验 获得超12个赞
经过一些非常好的指导后,我解决了这个问题:https ://stackoverflow.com/users/1124565/amura-cxg非常感谢!
解决方案是使用 XMLAttributes 注释所有属性。它正确地反序列化了响应。至于Resource
属性,我所需要的只是[XmlAttribute(AttributeName="Resource")]
其余的源代码按原样工作。
[XmlRoot(ElementName="MYAPI")]
public class MYAPI
{
[XmlElement(ElementName="MySite")]
public List<MySite> MySite { get; set; }
[XmlElement(ElementName="SomeOtherSite")]
public SomeOtherSite SomeOtherSite { get; set; }
}
public class MySite
{
[XmlElement(ElementName="Name")]
public string Name { get; set; }
[XmlElement(ElementName="URL")]
public string URL { get; set; }
[XmlElement(ElementName="SecondName")]
public string SecondName { get; set; }
[XmlAttribute(AttributeName="Resource")]
public string Resource { get; set; }
}
另外,我不需要任何自定义媒体格式化程序。从https://stackoverflow.com/users/1855967/elisabeth的一篇文章中,我了解到我们不应该接触 xsd.exe 工具生成的文件。所以我明确设置使用默认XmlSerializer而不是DataContractSerializer使用:
var formatters = new List<MediaTypeFormatter>()
{
new XmlMediaTypeFormatter(){ UseXmlSerializer = true }
};
- 1 回答
- 0 关注
- 80 浏览
添加回答
举报