2013-11-26 150 views
1

我正在尝试创建一个使用Web服务的Android应用程序。我想使用XDocument来阅读XML文件。我在我的项目中创建了一个名为xmlfolder的文件夹,并将我的XML文件myxml放入其中。用XDocument读取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

[XDocument读取具有名称空间的根元件的XML文件]的可能副本(http://stackoverflow.com/questions/19142606/xdocument-reading-xml-file-with-root-element-having-namespaces) – Monika

+0

你的文件设置为“content”和“always always”? – MarcinJuraszek

+0

@Monika谢谢你的回复。但我已经通过这个链接,但似乎并没有解决我的问题。我只是无法找到该文件。 – user3034944

回答

4

我想你没有正确指定的相对路径。你也错过了。在myxmlxml中,尽管我猜这只是你的文章中的一个错字。试试这个:

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

是我的坏..是一个错字。你的意思是我需要在我的机器上指定myxml.xml的确切位置?例如:C:\ Users \ pc \ Documents \ Projects \ MyProject \ MyProject \ xmlFiles \ myxml – user3034944

+0

这将指定绝对路径,这也可以工作。您也可以使用相对路径,我认为您可以在Windows上执行上述操作。也许读了差异。 –

+0

我试着做你的建议,但仍然得到相同的错误 – user3034944

0

如果你还没有注意到,就在你的Android项目一个不错的ResourceAssets文件夹,这就是Android的要求您的所有应用文件是。除非他们是一个班级,否则他们不能在外面生活。在这种情况下,您可能需要将文件放在Assets文件夹中,将该文件的Build Action标记为AndroidAsset。这样,您就可以访问您的文件,如:

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

感谢您的关注。我尝试了你的解决方案,现在我得到了一个Java.IO.FileNotFOundException,即使我已经将该文件放入了我的Assets文件夹。 – user3034944

+0

您是否将构建操作设置为'AndroidAsset'? – Cheesebaron

+0

是的,我确实将它设置为AndroidAsset – user3034944

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()