2013-12-19 19 views
0

我收到這樣的xml文件。我需要將此xml轉換爲對象。XML StreamReader反序列化

<?xml version="1.0" encoding="utf-8" ?> 
    <PrepaidBill> 
     <AccountDetails FCName="" TariffName="" Area="1000" SLDG="5000" SLEB="5000" ToDate="12/31/2013" FromDate="12/1/2013" Address="1st Cross, 26th Main, 9th block, Jayanagar" MeterNumber="DCPLCMTRXXX80001" ConsumerName="Pravin Nidoni"/> 
    </PrepaidBill> 

如何反序列化它?我已經創建了XML一類像

namespace ConvertXMLtoObject 
{ 
     [XmlRoot("PrepaidBill")] 
     public class BOPrepaidBill 
     { 
      public AccountDetails AccountDetails { get; set; } 
     } 

     public class AccountDetails 
     { 
      [XmlAttribute("FCName")] 
      public string FCName { get; set; } 

      [XmlAttribute("TariffName")] 
      public string TariffName { get; set; } 

      [XmlAttribute("Area")] 
      public int Area { get; set; } 

      [XmlAttribute("SLDG")] 
      public int SLDG { get; set; } 

      [XmlAttribute("SLEB")] 
      public int SLEB { get; set; } 

      [XmlAttribute("ToDate")] 
      public DateTime ToDate { get; set; } 

      [XmlAttribute("FromDate")] 
      public DateTime FromDate { get; set; } 

      [XmlAttribute("Address")] 
      public string Address { get; set; } 

      [XmlAttribute("MeterNumber")] 
      public string MeterNumber { get; set; } 

      [XmlAttribute("ConsumerName")] 
      public string ConsumerName { get; set; } 

     } 
    } 
+2

那麼,*反序列化這個xml到C#對象的第一步是閱讀[xml序列化/反序列化](http://stackoverflow.com/questions/364253/how-to-deserialize-xml-document)並嘗試編寫一些代碼。我建議你從這些步驟開始 –

+0

可能的重複[如何解析XML文件?](http://stackoverflow.com/questions/55828/how-does-one-parse-xml-files) – Kami

+2

@SergeyBerezovskiy以及有問題解析日期時間 –

回答

1

XmlSerializer內部使用XmlConvert字符串轉換爲所需的類型。 XmlConvert.ToDateTime將字符串轉換爲日期,但它要求日期採用"yyyy-MM-ddTHH:mm:sszzzzzz"格式或其子集。因此,您無法通過串行器將"12/31/2013"轉換爲DateTime。解決方法是手動解析您的日期字符串:

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

[XmlAttribute("ToDate")] 
public string ToDateString 
{ 
    get { return ToDate.ToString("MM/dd/yyyy"); } 
    set { ToDate = DateTime.Parse(value); } 
} 

替代解決方案(如果可能的話) - 在XML文件中的日期變更格式"2013-01-12"

+1

謝謝它爲我工作... –