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 關注
- 118 瀏覽
添加回答
舉報