由于对象名称不匹配,无法反序列化XML

我试图将XML对象反序列化为模型,但由于解析错误而失败。

我的代码是:

[XmlType(AnonymousType = true)]
[XmlRoot(ElementName = "Status",Namespace = "",Isnullable = false)]
public class Someclass
    {

    public DateTime? LastStatusUpdate;

    [XmlElement("LastStatusUpdate")]
    public string LastStatusUpdateString
    {
       set { LastStatusUpdate = !string.IsnullOrEmpty(value) ? XmlConvert.ToDateTime(value,XmlDateTimeSerializationmode.Unspecified) : (DateTime?)null; }
    }
    }

由于xmlElement和DateTime对象具有相同的名称,所以反序列化失败。 当我更改DateTime参数的名称时,它起作用了。

为什么?

xyx006 回答:由于对象名称不匹配,无法反序列化XML

只需将[XmlIgnore]添加到LastStatusUpdate,这样它就知道不要看它。这样,另一个LastStatusUpdateString[XmlElement("LastStatusUpdate")])应该可以正常工作。

默认情况下,XmlSerializer的工作就像每个公共成员Foo上都有[XmlElement]一样,将其视为与该成员同名的元素(因此:{{1 }}。

<Foo>上没有get似乎也很奇怪-感觉好像应该有一个:

LastStatusUpdate

get => LastStatusUpdate == null ? null :
    XmlConvert.ToString(LastStatusUpdate.Value,XmlDateTimeSerializationMode.Unspecified);
本文链接:https://www.f2er.com/3037409.html

大家都在问