Опитвам се да създам приложение с Android, което използва уеб услуги. Искам да използвам XML файл XDocument
, Създадох папка в моя проект с име xmlfolder
и са поставили моя XML файл с име myxml
в него.
Аз се опитах други решения на така харесва Как да заредим XML файл, намиращ се в папката на приложението в прозореца на телефона 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 ();
}
Отговори:
4 за отговор № 1Мисля, че не посочвате правилния път правилно. в myxmlxml, въпреки че предполагам, че това е само печатна грешка в публикацията ви. Опитайте това:
XDocument loadedData = XDocument.Load ("../xmlfolder/myxml.xml");
0 за отговор № 2
Ако още не сте забелязали, има хубаво Resource
и Assets
папка в проекта ви за Android, това е мястото, където Android изисква всичките ви файлове с приложения да бъдат. Те не могат да живеят навън, освен ако не са клас. В този случай вероятно ще искате файлът ви в Assets
в папката, маркирайте файла за действие Build като AndroidAsset. По този начин можете да получите достъп до файла си като:
using (var sr = Assets.Open("myxml.txt"))
{
var data = XDocument.Load(sr);
}
0 за отговор № 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()
.
Ако случаят не е такъв, може да искате да го използвате Изграждане на действие EmbeddedResource
с Assembly.GetManifestResourceStream()
.