2014-10-30 96 views
-1

有人可以幫助解決這個問題。我已經爲XML中的反序列化數據創建了類。但是,當我編程編譯VS顯示我這個異常InvalidOperationException:在XML文檔(2,2)有一個錯誤,所以我想我在類Store中定義屬性月。我試着輸入到int和無全成請幫我...以下是問題的代碼:C#中的反序列化XML#

<?xml version="1.0" encoding="utf-8" ?> 
 
<Store> 
 
<StoreS Month="2"> 
 
    <Amount>159</Amount> 
 
    <Mod_date> 20.3.2014 18:19:18</Mod_date> 
 
    </StoreS> 
 
    <StoreS Month="2"> 
 
    <Amount>270</Amount> 
 
    <Mod_date> 20.3.2014 18:19:40</Mod_date> 
 
    </StoreS> 
 
    </Store>

類進我想反序列化的數據是這樣寫的:

[XmlRoot("Store"),XmlType("Store")] 
public class Store 
{ 
    [XmlElement("StoreS")] 
    public List<RecordStore> StoreS = new List<RecordStore>(); 
    [XmlAttribute("Month")] 
    public string Month { get; set; } 

    } 

public class RecordStore 
{ 

    [XmlElement("Amount")] 
    public int amount{get;set;} 

    [XmlElement("Mod_date")] 
    public DateTime mod_date { get; set; } 
} 

非常感謝您的幫助。

+0

一個「錯誤的XML文檔( 2,2)「通常是在文本文檔中的這個字符位置有些奇怪的東西。這個錯誤發生在任何對象分配開始之前,所以我懷疑這與你的類中的數據類型有關,而是XML文件的內容。 – 2014-10-30 09:30:34

回答

0

xml有壞日期時間格式,它應該像2014-03-21T00:00:00,例如

+0

謝謝,沒關係 – user3367824 2014-10-30 10:13:35

0

,你在,你可以以同樣的方式序列化反序列化對象

public void Serialize<T>(T details) 
    { 
     XmlSerializer serializer = new XmlSerializer(typeof(T)); 
     using (TextWriter writer = new StreamWriter("Xml.xml")) 
     { 
      serializer.Serialize(writer, details); 
     } 
    } 

    public void Deserialize<T>(out T obj) 
    {    
     XmlSerializer serializer = new XmlSerializer(typeof (T)); 
     using (TextReader reader = new StreamReader("Xml.xml")) 
     { 
      obj = (T)serializer.Deserialize(reader); 
     } 
    }