使用XDocument读取xml文件

时间:2013-11-26 05:14:56

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

我正在尝试创建一个使用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 ();
}

3 个答案:

答案 0 :(得分:4)

我认为您没有正确指定相对路径。你也错过了。在myxmlxml中,虽然我猜这只是你帖子中的错字。试试这个:

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

答案 1 :(得分:0)

如果您还没有注意到,Android项目中有一个不错的ResourceAssets文件夹,这就是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()

如果情况并非如此,您可能需要考虑将构建操作 EmbeddedResourceAssembly.GetManifestResourceStream()一起使用。