0

我正在尝试在 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 未被用户代码处理 Message=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);

任何想法?

4

1 回答 1

0

我不知道这是否只是您的示例中的拼写错误,但是您在第一个块中定义的类是“DataStorage”,并且您正在序列化和反序列化“DataObject”,这可能解释了它为什么会中断遇到“数据存储”。

于 2010-08-14T13:17:09.740 回答