C#中的反序列化XML#

问题描述:

有人可以帮助解决这个问题。我已经为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

xml有坏日期时间格式,它应该像2014-03-21T00:00:00,例如

+0

谢谢,没关系 – user3367824 2014-10-30 10:13:35

,你在,你可以以同样的方式序列化反序列化对象

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