XmlSerializer反序列化失败:时间字符串不是有效的AllXsd值

引用内容 引用内容
<?xml version="1.0" encoding="gb2312"?>
<response>
  <account>270250392</account>
  <operator>腾讯Q币</operator>
  <amount>1</amount>
  <addtime>2014-4-15 10:51:39</addtime>
</response>

使用XmlSerializer对上边xml反序列化时失败,提示字符串“2014-4-15 10:51:39”不是有效的AllXsd值,错误原因是XmlSerializer正常序列化时间为2014-04-15T10:51:39,上边xml时间格式不正确所以反序列化失败。由于xml是从其他平台获得,只能在反序列化这边修改,下边对response类稍做修改可解决:

[XmlRoot("response")]
public class JPayResponse
{
    public string account { get; set; }
    public string @operator { get; set; }
    public int amount { get; set; }
    [XmlIgnore]
    public DateTime addtime { get; set; }

    [XmlElement("addtime")]
    public string addtime2
    {
        get { return addtime.ToString("yyyy-MM-dd HH:mm:ss"); }
        set { addtime = DateTime.Parse(value); }
    }
}


参考资料

[1].XmlSerializer:Format DateTime String:http://www.dotblogs.com.tw/alonstar/archive/2010/04/19/14688.aspx

评论: 0 | 引用: 0 | 查看次数: 10531
发表评论
登录后再发表评论!