反序列化将XML字符串转换为c#对象不起作用,因为我仍然可以获得可为空的值。 Errors
,RequestStatus
和Version
都显示空值。
在这里需要一只鹰眼,看看我有什么误解。我不是Dot Net框架的新手,但我是Dot Net Core的新手,所以也许我不了解不同的东西。
[XmlRoot(Namespace = "", ElementName = "Root", DataType = "string", IsNullable = true)]
public class GetAuthorizationTokenResponse
{
public class RootDetail
{
public class RequestHeadDetail
{
[XmlElement("Errors")]
public string Errors { get; set; }
[XmlElement("RequestStatus")]
public string RequestStatus { get; set; }
[XmlElement("Version")]
public string Version { get; set; }
}
[XmlElement("RequestHead")]
public RequestHeadDetail RequestHead { get; set; } = new RequestHeadDetail();
}
[XmlElement("Root")]
public RootDetail Root { get; set; } = new RootDetail();
}
var xmlResult = "<Root><RequestHead><Errors/><RequestStatus>0</RequestStatus><Version>2.3.2</Version></RequestHead></Root>";
var stringReader = new StringReader(xmlResult);
var test = (Ituran.GetAuthorizationTokenResponse)xmlSerializer.Deserialize(stringReader);
答案 0 :(得分:0)
您的班级结构对应于:
<Root>
<Root>
…
</Root>
</Root>
第一个<Root>
元素对应GetAuthorizationTokenResponse
类,第二个元素对应RootDetail
类。要么删除其中一个,要么重新构建输入XML。