2012-02-14 51 views
0

我在Windows Phone 7 Mango中创建了一个应用程序,当我加载应用程序时,MainViewModel使用此函数从隔离存储中的文件加载所有信息:WP7 - 反序列化隔离存储中的XML文件

private ObservableCollection<KasutajadViewModel> LoadUsers() 
    { 
     ObservableCollection<KasutajadViewModel> kasutajad = new ObservableCollection<KasutajadViewModel>(); 
     try 
     { 
      using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) 
      { 
       using (IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile("Kasutajad.xml", FileMode.Open)) 
       { 
        XmlSerializer serializer = new XmlSerializer(typeof(ObservableCollection<PiletViewModel>)); 
        //ObservableCollection<KasutajadViewModel> data 
        kasutajad = 
         (ObservableCollection<KasutajadViewModel>)serializer.Deserialize(stream); 
        stream.Close(); 
       } 
      } 
     } 
     catch (Exception) 
     { 

     } 
     return kasutajad; 
    } 

问题是,解串器不返回数据。 即使当它从读取XML文件是这样的:这是由SaveUsers函数产生的,但我认为这是多余的问题

<?xml version="1.0" encoding="utf-8"?> 
<ArrayOfKasutajadViewModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<KasutajadViewModel> 
    <Nimi>Reigo Hein</Nimi> 
    <Isikukood>96952422597</Isikukood> 
</KasutajadViewModel> 
</ArrayOfKasutajadViewModel>  

。 LoadUsers正确加载流,但反序列化不输出所需的数据。

希望任何人都可以帮助我,谢谢。

回答

1

您正在为ObservableCollection的PiletViewModel创建XmlSerializer,但是您正在反序列化KasutajadViewModel的数组。这里有一个类型不一致。