将 XML 字符串反序列化为 C# 对象导致可为空数据

Deserialize XML string into c# object result in nullable data

反序列化 XML 字符串到 c# 对象中不起作用,因为我仍然得到可为 null 的值。 ErrorsRequestStatusVersion 都显示空值。

这里需要鹰眼,看看我误会了什么。我不是 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>元素对应GetAuthorizationTokenResponseclass,第二个RootDetailclass。要么删除其中之一,要么重组您的输入 XML.