首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在独立存储中加载XML

在独立存储中加载XML
EN

Stack Overflow用户
提问于 2011-08-11 01:09:39
回答 2查看 1.4K关注 0票数 1

我使用以下代码在独立存储中创建和加载xml。在第一部分中,如果文件不存在,它将在独立存储中创建该文件,否则将加载已在独立存储文件中创建/加载的文件。问题是当它试图加载它在第一次调用函数时(成功地)创建/加载的文件。以下是代码

代码语言:javascript
复制
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);

            }
        }
    }

我将非常感谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-11 01:57:06

代码语言:javascript
复制
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);
    }

在此代码中:

  • 第1行:文件不存在
  • 第2行:创建一个新的(空)文件
  • 第4行:加载(空)文件-此时文件为空,没有加载任何内容!我猜它抛出异常可能是因为它,或者因为它无法将名称解析到本地存储-无论如何,此行是incorrect.
  • Line 5:保存(
  • ?)XML文档保存到文件

中。

您需要修复XML文件的创建。

票数 2
EN

Stack Overflow用户

发布于 2011-08-11 02:09:25

为什么要创建一个空文件并保存它?这看起来有点..不对。

关于加载一个空文件,当然,只要你访问xml.Root.Element("BlackSheep").Value,它就会失败并抛出一个异常。

该元素不会存在于空文件中,因此Element("BlackSheep")将返回null。而.Value属性访问将导致异常。

所以我不确定你需要什么帮助,除了:

  1. 不创建空XML,因为没有点;和/或,
  2. 在您的读取中添加一些代码,以测试文件中是否确实存在任何内容。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7014902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档