Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows Phone 8-序列化/反序列化XML时出错_C#_Xml_Silverlight_Windows Phone - Fatal编程技术网

C# Windows Phone 8-序列化/反序列化XML时出错

C# Windows Phone 8-序列化/反序列化XML时出错,c#,xml,silverlight,windows-phone,C#,Xml,Silverlight,Windows Phone,我有一个包含a类对象列表的a类和B类 public class Item { public string X{ get; set; } public string Y{ get; set; } } public class ItemCollection { List<Item> items = new List<Item>(); //Some methods } 但在反序列化它时,我得到“…根元素丢失”错误 IsolatedStorage

我有一个包含a类对象列表的a类和B类

public class Item
{
    public string X{ get; set; }
    public string Y{ get; set; }
}
public class ItemCollection
{
    List<Item> items = new List<Item>();
    //Some methods
}
但在反序列化它时,我得到“…根元素丢失”错误

IsolatedStorageFileStream ifs=new-IsolatedStorageFileStream(“myxml.xml”,FileMode.Open,isfile);
DataContractSerializer ser=新的DataContractSerializer(itemlist.Items.GetType());
XmlReader=XmlReader.Create(ifs);
itemlist.items=(List)ser.ReadObject(reader);

有没有其他/更好的方法可以序列化/反序列化一个包含另一个类的列表/集合的类?

在我看来,问题仅仅是,当您通过
文件模式打开文件进行反序列化时,您正在擦除文件。所以根元素当然丢失了:它是空的。您可能有
FileMode.Create
FileMode.Open
在序列化/反序列化之间反转。然后使用
添加一些
,以便更好地测量

序列化应使用
FileMode.Create
,截断或创建新数据的文件


反序列化应该使用
FileMode.Open
,以查看现有数据。

在我看来,问题只是,当您通过
FileMode.Create打开文件进行反序列化时,您正在擦除文件。所以根元素当然丢失了:它是空的。您可能有
FileMode.Create
FileMode.Open
在序列化/反序列化之间反转。然后使用
添加一些
,以便更好地测量

序列化应使用
FileMode.Create
,截断或创建新数据的文件


反序列化应该使用
FileMode.Open
,查看现有数据。

那么,实际的文件内容是什么?根元素丢失了吗?这可能与您未正确处理/关闭的事物数量有关吗?您是否尝试添加
reader.MoveToContent()
?我正在写入项目列表并读取它们(文件被覆盖)。我在reader.MoveToContent()中得到“根元素丢失”。那么,实际的文件内容是什么?根元素丢失了吗?这可能与您未正确处理/关闭的事物数量有关吗?您是否尝试添加
reader.MoveToContent()
?我正在写入项目列表并读取它们(文件被覆盖)。我还收到了reader.MoveToContent()的“根元素丢失”。很抱歉,这是复制粘贴错误。在实际代码中,FileMode在反序列化时打开,在序列化时创建。我在问题中更正了它。@aaa再次:文件内容是什么?我正在序列化Itemcollection类。序列化正在成功完成。但是在反序列化时,我得到了错误。所以我不知道这个文件包含什么。如何检查文件内容?@aaa在写入文件后,使用任何基于文本的阅读器API打开文件,并转储contentsSorry,这是复制粘贴错误。在实际代码中,FileMode在反序列化时打开,在序列化时创建。我在问题中更正了它。@aaa再次:文件内容是什么?我正在序列化Itemcollection类。序列化正在成功完成。但是在反序列化时,我得到了错误。所以我不知道这个文件包含什么。如何检查文件内容?@aaa在写入文件后,使用任何基于文本的阅读器API打开文件,然后转储内容
IsolatedStorageFileStream ifs = new IsolatedStorageFileStream("myxml.xml", FileMode.Create, isfile);
DataContractSerializer ser = new DataContractSerializer(itemlist.items.GetType());
XmlWriter writer = XmlWriter.Create(ifs);
ser.WriteObject(writer, itemlist.items);
IsolatedStorageFileStream ifs = new IsolatedStorageFileStream("myxml.xml", FileMode.Open, isfile);
DataContractSerializer ser = new DataContractSerializer(itemlist.Items.GetType());
XmlReader reader=XmlReader.Create(ifs);
itemlist.items= (List<Item>)ser.ReadObject(reader);