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 № 1Ich 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()
.