你能指定日期时间的XmlSerialization格式吗?

cjk*_*cjk 51 c# xml serialization

我需要将日期时间序列化/反序列化为yyyyMMdd格式的XML文件.我可以使用属性/解决方法吗?

Joh*_*ers 62

不,没有.如果它采用该格式,那么就XML Schema而言,它不是有效的dateTime.

你能做的最好的事情如下:

[XmlIgnore]
public DateTime DoNotSerialize {get;set;}

public string ProxyDateTime {
    get {return DoNotSerialize.ToString("yyyyMMdd");}
    set {DoNotSerialize = DateTime.Parse(value);}
}
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是:必须存在get/set.我花了半个小时调试为什么我的财产没有被序列化.事实证明我没有'设定',因为我心里想,'我永远不会改变这个价值; 为什么还要写一套呢?' (9认同)
  • @spamguy:XmlSerializer 仅处理具有公共 get 和公共 set 的公共属性。 (2认同)

小智 18

XmlElementAttribute #DataType应该提供您所需要的:

[XmlElement(DataType="date")]    
public DateTime Date1 {get;set;}
Run Code Online (Sandbox Code Playgroud)

这将使Date1属性序列化为正确的xml日期格式.

  • 不,问题是我需要将其序列化为非标准的xml日期格式.我接受的解决方案就是我所接受的. (3认同)