/ / Lesen einer XML-Datei mit XDocument - c #, linq-to-xml, xamarin.android

Lesen einer XML-Datei mit XDocument - c #, linq-to-xml, xamarin.android

Ich versuche, eine Android-App zu erstellen, die Webservices verwendet. Ich möchte eine XML-Datei mit lesen XDocument. Ich habe in meinem Projekt einen Ordner mit dem Namen erstellt xmlfolder und habe meine XML-Datei mit dem Namen platziert myxml hinein.

Ich habe andere Lösungen auf SO gerne probiert Wie lädt man die XML-Datei, die sich im Ordner der Anwendung in Windows Phone 7 befindet? scheint aber nicht zu funktionieren. Ich bekomme immer den Fehler:

System.IO.DirectoryNotFoundException: Could not find a part of the path "/xmlfolder/myxml.xml".

und

myxml.xml   myxml is null

Hier habe ich etwas ausprobiert:

if (string.IsNullOrEmpty(myFIileXML))
{
XDocument loadedData = XDocument.Load ("xmlfolder/myxml.xml");
myFileXML = loadedData.ToString ();
}

Antworten:

4 für die Antwort № 1

Ich denke, Sie geben den relativen Pfad nicht richtig an. Sie vermissen auch den. in myxmlxml, obwohl ich schätze, das ist nur ein Tippfehler in Ihrem Post Versuchen Sie es stattdessen:

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

0 für die Antwort № 2

Wenn Sie es noch nicht gemerkt haben, gibt es ein schönes Resource und Assets Ordner in Ihrem Android-Projekt. Hier benötigt Android alle Ihre App-Dateien. Sie können nicht draußen leben, wenn sie keine Klasse sind. In diesem Fall möchten Sie wahrscheinlich Ihre Datei in der Assets Markieren Sie die Build-Aktion der Datei als AndroidAsset. Auf diese Weise können Sie auf Ihre Datei wie folgt zugreifen:

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

0 für die Antwort № 3

Das aktuelle Arbeitsverzeichnis auf Android ist /, das nicht beschreibbar ist (und Ihre Anwendungsdateien nicht enthält) Also die Fehlermeldung:

System.IO.DirectoryNotFoundException: Could not find a part of the path "/xmlfolder/myxml.xml".

Die Lösung besteht darin, einen tatsächlich vorhandenen Pfad zu verwenden, z. System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal). Beachten Sie außerdem, dass Sie diesen Pfad "woanders" erstellt haben müssen, z. mit Directory.CreateDirectory().

Wenn dies nicht der Fall ist, möchten Sie vielleicht mit verwenden Aktion erstellen EmbeddedResource mit Assembly.GetManifestResourceStream().