【问题标题】:Xamarin Android project can't find XML fileXamarin Android 项目找不到 XML 文件
【发布时间】:2019-06-12 17:26:23
【问题描述】:

我的 Xamarin Android 项目中有一个名为“SaveData.xml”的文件。我无法将它保存在资产文件夹中,因为我需要在运行时写入它。我正在尝试使用我的 LoadXML() 函数访问它:

XmlDocument doc = new XmlDocument();
XmlDocument saveData = new XmlDocument();

public void LoadXML()
        {
            saveData.Load("SaveData.xml");

            //This bit works fine.
            AssetManager assets = this.Assets;
            using (StreamReader sr = new 
            StreamReader(assets.Open("Spices.xml")))
            {
                doc.Load(sr);
            }
        }

我已经尝试阅读它,但所有答案都说只是保存在资产文件夹中。我不能这样做,因为我需要写入这个文件,然后在每次应用程序启动时再次读取它。我还尝试将它放在资源文件夹中并更改构建操作。文件路径错了吗?我需要将它保存在其他地方吗?我被难住了。

编辑:抱歉没有具体说明。 "saveData.Load("SaveData.xml")" 正在抛出一个文件未找到异常,我想知道为什么。

这是xml文件。

保存数据.xml

<?xml version="1.0" encoding="utf-8" ?>
<list>
  <cupboard></cupboard>
  <shoppingList></shoppingList>
</list>

【问题讨论】:

  • 这可能是一个 XY 问题 (meta.stackexchange.com/questions/66377/what-is-the-xy-problem),你想达到什么目的?
  • 我现在编辑了它。感谢您的指点。 :D
  • 你确定xml文件有效吗?因为你加载文件的方式是正确的(至少我一直在加载这样的文件)
  • 是的,没有错误。
  • 您将文件保存在哪里?我在那里的新编辑中显示了 XML。

标签: c# xml xamarin.android


【解决方案1】:

是的,如果您需要在应用程序运行时写入 xml,我们不能将其放入 assets 文件夹中,因为它是只读的。

另外,当你执行saveData.Load("SaveData.xml")时,你并没有指定目标目录,所以它默认为根目录,然后它会抛出一个找不到文件的异常。

因此,您需要将文件写入您具有写入权限的位置。 下面的代码将在用户的主目录中指定一个文件,该文件是可写的:

 using System.IO;

 string backingFile_path = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "SaveData.xml");

更多详情可以查看:https://docs.microsoft.com/en-us/xamarin/android/platform/files/

注意:此link 中包含一个示例,您可以参考。

【讨论】:

  • 很高兴为您提供帮助,祝您编码愉快!
猜你喜欢
  • 1970-01-01
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
  • 2017-06-28
  • 2021-03-17
  • 2013-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多