将 XML 字符串反序列化为 C# 对象导致可为空数据
Deserialize XML string into c# object result in nullable data
反序列化 XML 字符串到 c# 对象中不起作用,因为我仍然得到可为 null 的值。 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);
你的class结构对应于:
<Root>
<Root>
…
</Root>
</Root>
第一个<Root>
元素对应GetAuthorizationTokenResponse
class,第二个RootDetail
class。要么删除其中之一,要么重组您的输入 XML.
反序列化 XML 字符串到 c# 对象中不起作用,因为我仍然得到可为 null 的值。 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);
你的class结构对应于:
<Root>
<Root>
…
</Root>
</Root>
第一个<Root>
元素对应GetAuthorizationTokenResponse
class,第二个RootDetail
class。要么删除其中之一,要么重组您的输入 XML.