2013-11-26 147 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()