2010-03-21 66 views
1

處理FormatExceptions我有一個返回該XML使用XmlSerializer.Deserialize

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

我試圖將其反序列化到這個類

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

第三方Web服務,但由於0000-00-00不是有效DateTime,我得到一個FormatException。處理這個問題的最好方法是什麼?

回答

3

如果第三方模式將該字段定義爲日期時間,那麼除非出現錯誤,否則它應始終包含有效的日期時間值。 在這種情況下,你可以考慮反序列化作爲一個字符串

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

第三方沒有.NET所以不一定是一個日期時間,因此,0000-00-00。你建議的字符串方法也是我所做的,但是它感覺很不方便,並且希望可能有一個更清晰的解決方案 – kenwarner

+0

WSDL中描述了什麼類型的release_date?串?或者沒有WSDL,在這種情況下,它應該首先反序列化爲字符串,然後應用自己的邏輯,恐怕。 –

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;} 
} 
相關問題