使用XmlSerializer.Deserialize处理FormatExceptions

时间:2010-03-21 02:30:40

标签: .net xmlserializer formatexception

我有第三方网络服务,返回此xml

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

我正在尝试将其反序列化为此类

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

但是因为0000-00-00不是有效的DateTime,所以我得到了一个FormatException。处理这个问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:4)

如果第三方架构将该字段定义为日期时间,则除非出现问题,否则它应始终包含有效的日期时间值。 在这种情况下,您可以考虑将其反序列化为字符串

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.
      }
    }
}

答案 1 :(得分:2)

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;}
}