我正在尝试创建一个使用Web服务的Android应用。我想使用XDocument
读取XML文件。我在项目中创建了一个名为xmlfolder
的文件夹,并将名为myxml
的XML文件放入其中。
我在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 ();
}
答案 0 :(得分:4)
我认为您没有正确指定相对路径。你也错过了。在myxmlxml中,虽然我猜这只是你帖子中的错字。试试这个:
XDocument loadedData = XDocument.Load ("../xmlfolder/myxml.xml");
答案 1 :(得分:0)
如果您还没有注意到,Android项目中有一个不错的Resource
和Assets
文件夹,这就是Android需要您的所有应用文件的地方。除非他们是班级,否则他们不能住在外面。在这种情况下,您可能希望将文件放在Assets
文件夹中,将文件的Build Action标记为AndroidAsset。这样您就可以访问您的文件:
using (var sr = Assets.Open("myxml.txt"))
{
var data = XDocument.Load(sr);
}
答案 2 :(得分:0)
Android上的当前工作目录是/
,它不可写(并且不包含您的应用程序文件)。因此错误消息:
System.IO.DirectoryNotFoundException: Could not find a part of the path "/xmlfolder/myxml.xml".
修复方法是使用实际存在的路径,例如System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal)
。此外,请注意您必须在“其他地方”创建此路径,例如与Directory.CreateDirectory()
。
如果情况并非如此,您可能需要考虑将构建操作 EmbeddedResource
与Assembly.GetManifestResourceStream()
一起使用。