目前我正在开发window游戏,它使用隔离存储来处理信息。我试图用XML来做这件事,但是我在尝试生成XML文档并从中读取时遇到了这个问题。下面是生成的代码和XML。
部分代码:
using(IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForAssembly())
{
using(IsolatedStorageFileStream stream =
new IsolatedStorageFileStream("class.xml", FileMode.Create, file))
{
XmlWriterSettings setting = new XmlWriterSettings();
setting.Indent = true;
using(XmlWriter writer = XmlWriter.Create(stream, setting))
{
XmlSerializer serializer = new XmlSerializer(typeof (Student));
serializer.Serialize(stream, new Student()
{
Name = "AhLim"
});
}
}
using(IsolatedStorageFileStream stream =
new IsolatedStorageFileStream("class.xml", FileMode.Open, file))
{
XmlSerializer serializer = new XmlSerializer(typeof (Student));
studentA = (Student) serializer.Deserialize(stream);
}
}学生类:
public class Student
{
public String Name { get; set; }
}生成的XML文档:
<?xml version="1.0"?>
<Student xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>AhLim</Name>
</Student>毕竟,(4,11)处的错误as title,XML document error在反序列化时发生。我无法弄清楚这个问题,因为我在谷歌上搜索,并知道流问题。感谢大家的帮助
发布于 2013-02-04 11:16:11
这是因为您使用的IsolatedStorageFileStream以错误的编码编写xml,请尝试使用您创建的XmlWriter。这将使用utf-8编码,Deserialization应该可以正常工作。
using(IsolatedStorageFileStream stream = new IsolatedStorageFileStream("class.xml",FileMode.Create,file))
{
XmlWriterSettings setting = new XmlWriterSettings();
setting.Indent = true;
using (XmlWriter writer = XmlWriter.Create(stream, setting))
{
XmlSerializer serializer = new XmlSerializer(typeof(Student));
serializer.Serialize(writer, new Student() { Name = "AhLim" });
}
}IsolatedStorageFileStream创建标头
<?xml version="1.0"?>XmlWriter创建标头
<?xml version="1.0" encoding="utf-8"?>发布于 2014-12-03 20:20:28
我也有同样的问题。愚蠢的微软忘记告诉你,你的学生类必须有一个公共的默认构造函数。即public Student() {},问题就会消失。
https://stackoverflow.com/questions/14679507
复制相似问题