Xamarin Android项目找不到XML文件

时间:2019-06-12 17:26:23

标签: c# xml xamarin.android

我的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文件。

SaveData.xml

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

1 个答案:

答案 0 :(得分:0)

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

此外,在执行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中包含一个示例,您可以参考。