只是序列化数据的反序列化失败了,为什么?

时间:2010-08-12 16:48:06

标签: c# silverlight xml-deserialization

我正在尝试序列化和反序列化Silverlight中的对象,但似乎无法使其工作。序列化工作正常,但它抱怨我的rootObject不被期望。我不明白,因为生成XML的是Silverlight。

顺便说一句;我还是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        消息= <DataStorage xmlns=''&GT;没想到。

我的反序列化代码如下:

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我不知道这可能只是你的例子中的拼写错误,但你在第一个块中定义的类是“DataStorage”,你正在序列化和反序列化“DataObject”,这可能解释了为什么它是遇到“DataStorage”时破解。