【问题标题】:Reading an xml file with XDocument使用 XDocument 读取 xml 文件
【发布时间】:2013-11-26 05:14:56
【问题描述】:

我正在尝试创建一个使用网络服务的 Android 应用程序。我想使用XDocument 读取一个XML 文件。我在我的项目中创建了一个名为 xmlfolder 的文件夹,并将名为 myxml 的 XML 文件放入其中。

我在 SO 上尝试过其他解决方案,例如 How to load XML file located inside the folder of the application in window phone 7?,但似乎不起作用。我不断收到错误:

System.IO.DirectoryNotFoundException: Could not find a part of the path "/xmlfolder/myxml.xml"

myxml.xml   myxml is null

这是我尝试过的:

if (string.IsNullOrEmpty(myFIileXML))
{
    XDocument loadedData = XDocument.Load ("xmlfolder/myxml.xml");
    myFileXML = loadedData.ToString ();
}

【问题讨论】:

  • 您的文件是否设置为contentcopy always
  • @Monika 感谢您的回复。但我已经通过了那个链接,但似乎并没有解决我的问题。我只是无法找到那个文件..
  • @MarcinJuraszek 感谢您的关注。是的,它设置为两个值

标签: c# linq-to-xml xamarin.android


【解决方案1】:

我认为您没有正确指定相对路径。您还缺少 .在 myxmlxml 中,尽管我猜这只是您帖子中的一个错字。试试这个:

XDocument loadedData = XDocument.Load ("../xmlfolder/myxml.xml");

【讨论】:

  • 是的,我的错……是一个错字。你的意思是我需要在我的机器上指定 myxml.xml 的确切位置?例如:C:\Users\pc\Documents\Projects\MyProject\MyProject\xmlFiles\myxml
  • 那将是指定绝对路径,这也可以。你也可以使用相对路径,我认为你可以在 Windows 上像上面那样做。也许阅读一下差异。
  • 我尝试按照您的建议进行操作,但仍然出现相同的错误
【解决方案2】:

如果您还没有注意到,您的 Android 项目中有一个不错的 ResourceAssets 文件夹,这是 Android 需要您所有应用文件的地方。他们不能住在外面,除非他们是一个班级。在这种情况下,您可能希望您的文件位于 Assets 文件夹中,将文件的 Build Action 标记为 AndroidAsset。这样您就可以像这样访问您的文件:

using (var sr = Assets.Open("myxml.txt"))
{
    var data = XDocument.Load(sr);
}

【讨论】:

  • 感谢您的关注。我尝试了你的解决方案,现在我得到了一个 Java.IO.FileNotFOundException,即使我已将文件放在我的 Assets 文件夹中。
  • 您是否将构建操作设置为AndroidAsset
  • 您确定文件名匹配吗?我写了myxml.txt,但你说的是myxml.xml。这是一个陷阱!
【解决方案3】:

Android 上的当前工作目录是 /,它不可写(并且不包含您的应用程序文件)。因此错误消息:

System.IO.DirectoryNotFoundException: Could not find a part of the path "/xmlfolder/myxml.xml".

解决方法是使用实​​际存在的路径,例如System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal)。此外,请注意,您必须在“其他地方”创建此路径,例如Directory.CreateDirectory()

如果不是这样,您可能需要考虑使用 构建操作 EmbeddedResourceAssembly.GetManifestResourceStream()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    相关资源
    最近更新 更多