2010-08-12 147 views
0

我想序列化和反序列化Silverlight中的对象,但似乎无法让它工作。序列化工作正常,但它抱怨我的rootObject不被期望。我不明白,因为它是生成XML的Silverlight。只是序列化数据的反序列化失败,为什么?

Btw;我还是新的C#

我有一个类,它看起来像:

[XmlRoot("DataStorage")] // has no effect 
public class DataStorage 
{ 
    public string type { get; set; } 
    public string imgUrl { get; set; } 
    public List<AbstractionObject> children { get; set; } 

    public DataStorage() 
    { 
     type = "default"; 
     children = new List<AbstractionObject>(); 
    } 
} 

当Silverlight的连载它产生:

<?xml version="1.0" encoding="utf-8"?> 
<DataStorage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <type>default</type> 
    <children /> 
</DataStorage> 

然而,当我试图反序列化生产:

System.InvalidOperationException未被用户代码处理 消息= XML文档(2,2)中存在错误。

InnerException:System.InvalidOperationException Message = <DataStorage xmlns=''>不是预期的。

我反序列化的代码如下:

// create the xmlSerializer for DataObject 
XmlSerializer xmlSerializer = new XmlSerializer(typeof(DataObject)); 

// Open the file again for reading. 
StreamReader fileStream = new StreamReader(isoStore.OpenFile("IsoStoreFile.xml", FileMode.Open)); 
XmlReader xmlReader = XmlReader.Create(fileStream); 

DataObject deserializedObject = (DataObject)xmlSerializer.Deserialize(xmlReader); 
fileStream.Close(); 

Debug.WriteLine(deserializedObject); 

任何想法?

回答

0

我不知道这可能是你的例子中的一个错字,但是你在第一个块中定义的类是“DataStorage”,并且你正在序列化和反序列化一个“DataObject”,这可能解释了为什么当它遇到“DataStorage”时它就会崩溃。