【发布时间】:2017-10-23 12:45:15
【问题描述】:
我已经阅读了尽可能多的文章,我以前也用这种方式进行过序列化,但我一生都无法弄清楚为什么以下内容不能正常工作。
感谢您的帮助。
鉴于此代码:
反序列化响应的 POCO 类:
[XmlRoot]
public class MyResponseClass
{
[XmlElement("response")]
public Response Response { get; set; }
}
[XmlRoot]
public class Response
{
[XmlElement("error")]
public Error Error { get; set; }
[XmlElement("sid")]
public string Sid { get; set; }
}
[XmlRoot]
public class Error
{
[XmlElement("error_msg")]
public string ErrorMessage { get; set; }
}
请求和响应处理代码:
var webClient = _webClientWrapperFactory.Create();
var url = "https://serviceendpoint.com";
var responseString = webClient.DownloadString(url);
MyResponseClass result;
var serializer = new XmlSerializer(typeof(MyResponseClass));
using (var reader = new StringReader(responseString))
{
result = (MyResponseClass) serializer.Deserialize(reader);
}
return result;
返回此响应:
<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><response><error><error_msg>CANNOT_LOGIN</error_msg></error></response>
反序列化尝试抛出此错误:
System.Xml.dll 中出现“System.InvalidOperationException”类型的异常,但未在用户代码中处理
附加信息:XML 文档中存在错误 (1, 57)。
编辑: 内部异常:
{"<response xmlns=''> was not expected."}
【问题讨论】:
-
InnerException:
"<response xmlns=''> was not expected." -
尝试从
Response和Error中删除XmlRoot属性,因为它只允许在xml 的根对象中使用
标签: c# xml serialization deserialization xml-deserialization