C#从xml反序列化日期时间

本文关键字:日期 时间 反序列化 xml | 更新日期: 2023-09-27 18:29:46

我必须用日期反序列化xml,如下所示:

<date>2015/10/16 00:00:00.000000000</date>

我的类包含以下字段:

[XmlAttribute("date")]
public DateTime StartDate { get; set; }

但我总是收到默认日期。有可能解析这种日期时间格式吗?

编辑:当我将XmlAttribute更改为XmlElement时,我得到异常:

There is an error in XML document

所以我认为DateTime可以解析这种格式。

C#从xml反序列化日期时间

处理此问题的一种方法是用[System.Xml.Serialization.XmlIgnore]

这告诉序列化程序根本不序列化或反序列化它。

然后,向类添加一个名为的附加属性,例如DateString。它可能被定义为

public string DateString {
    set { ... }
    get { ... }
}

然后,您可以在get/set逻辑中序列化和反序列化DateString:

public string DateString {
    set {
    // parse value here - de-ser from your chosen format
    // use constructor, eg, Timestamp= new System.DateTime(....);
    // or use one of the static Parse() overloads of System.DateTime()
    }
    get {
        return Timestamp.ToString("yyyy.MM.dd");  // serialize to whatever format you want.
    }
}

在get和set中,您正在操作Date成员的值,但您使用的是自定义逻辑。序列化属性当然不需要是字符串,但这是一种简单的方法

由Dino Chiesa