/ / Четене на xml файл с XDocument - c #, linq-to-xml, xamarin.android

Четене на XML файл с XDocument - c #, linq-to-xml, xamarin.android

Опитвам се да създам приложение с 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().