我正在尝试序列化和反序列化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);
有什么想法吗?
答案 0 :(得分:0)
我不知道这可能只是你的例子中的拼写错误,但你在第一个块中定义的类是“DataStorage”,你正在序列化和反序列化“DataObject”,这可能解释了为什么它是遇到“DataStorage”时破解。