代码之家  ›  专栏  ›  技术社区  ›  kenwarner

使用XmlSerializer处理格式异常。反序列化

  •  1
  • kenwarner  · 技术社区  · 15 年前

    我有一个返回此XML的第三方Web服务

    <book>
      <release_date>0000-00-00</release_date>
    </book>
    

    我正试图将它反序列化到这个类中

    public class Book
    {
        [XmlElement("release_date")]
        public DateTime ReleaseDate { get; set; }
    }
    

    但是因为 0000-00-00 不是有效的 DateTime ,我得到一个格式异常。处理这个最好的方法是什么?

    2 回复  |  直到 15 年前
        1
  •  4
  •   Ray Lu    15 年前

    如果第三方模式将该字段定义为datetime,那么它应该始终包含有效的datetime值,除非出现问题。 在这种情况下,可以考虑将其反序列化为字符串

    public class Book
    {
        [XmlElement("release_date")]
        public string ReleaseDate { get; set; }
    
        public DateTime? GetReleaseDate 
        { 
          get 
          {
               // parse ReleaseDate datetime string
               // return the value; or null if the string contains invalid datetime.
          }
        }
    }
    
        2
  •  2
  •   John Saunders    15 年前
    public class Book
    {
        [XmlElement("release_date")]
        public string StringReleaseDate
        {
            get {return ReleaseDate.ToString("yyyy-MM-dd");}
            set {ReleaseDate = DateTime.ParseExact(value, "yyyy-MM-dd");}
        }
    
        [XmlIgnore]
        public DateTime ReleaseDate {get;set;}
    }