我正在使用以下代码在隔离存储中创建和加载xml。在第一部分,如果文件不存在,它会在隔离存储中创建文件,否则它会在已隔离的存储文件中加载已创建/加载的文件。 问题是它在第一次调用函数时尝试加载它已成功创建/加载的文件。这是代码
public void InitAch()
{
using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
{
if (!storage.FileExists("Achievements.xml"))
{
using (Stream stream = storage.OpenFile("Achievements.xml", FileMode.Create, FileAccess.Write))
{
XDocument xml = XDocument.Load("Achievements.xml");
xml.Save(stream,SaveOptions.None);
}
}
else
{
using (Stream stream = storage.OpenFile("Achievements.xml", FileMode.Open, FileAccess.Read))
{
XDocument xml = XDocument.Load(stream,LoadOptions.None);
Lexis.Page4.Achievements.sheep = Int32.Parse(xml.Root.Element("BlackSheep").Value);
Lexis.Page4.Achievements.singularity = Int32.Parse(xml.Root.Element("Singularity").Value);
Lexis.Page4.Achievements.luke = Int32.Parse(xml.Root.Element("LuckyLuke").Value);
Lexis.Page4.Achievements.gardener = Int32.Parse(xml.Root.Element("Gardener").Value);
Lexis.Page4.Achievements.dumbo = Int32.Parse(xml.Root.Element("Dumbo").Value);
Lexis.Page4.Achievements.joker = Int32.Parse(xml.Root.Element("Joker").Value);
Lexis.Page4.Achievements.maid = Int32.Parse(xml.Root.Element("Maid").Value);
Lexis.Page4.Achievements.mr = Int32.Parse(xml.Root.Element("MrWords").Value);
Lexis.Page4.Achievements.secret = Int32.Parse(xml.Root.Element("Detective").Value);
}
}
}
感谢您的帮助。
答案 0 :(得分:2)
if (!storage.FileExists("Achievements.xml"))
using (Stream stream = storage.OpenFile("Achievements.xml", FileMode.Create, FileAccess.Write))
{
XDocument xml = XDocument.Load("Achievements.xml");
xml.Save(stream,SaveOptions.None);
}
在此代码中:
您需要修复XML文件的创建。
答案 1 :(得分:0)
为什么要创建一个空文件并保存?这似乎有点......错了。
关于加载空文件,当然,只要您访问xml.Root.Element("BlackSheep").Value
,该文件就会失败并出现异常。
该元素不会存在于空文件中,因此Element("BlackSheep")
将返回null。虽然.Value
属性访问会导致异常。
所以我不确定除了以外需要什么样的帮助: