Mittwoch, den 25. Mai 2016 – Universal Windows Platform (UWP) und XML

Steige ich mal etwas tiefer in meine RechnungEasyApp ein. Bis jetzt habe ich eine Menüstruktur und zwei Formulare, die mich ein paar Musterdaten anzeigen. Damit kann ich noch nicht wirklich viel anfangen, außer die einzelnen Menüpunkte anzuklicken und mich freuen, dass die Entsprechenden Inhalte angezeigt werden. Meinem Ziel mit dieser App Rechnungen schreiben zu können, bin ich damit noch nicht viel weiter gekommen.

2016-05-25 21_07_35-RechnungEasyApp

ClassArtikelIn meiner App habe ich es mit einer Reihe an Daten zu tun, die irgendwo gespeichert werden müssen. Damit ich Artikel aus der Artikelliste in die Rechnung übertragen kann, müssen diese natürlich vorher angelegt werden. Und damit ich nicht jedes mal von neuem die Artikel anlegen oder gleich ins Rechnungsformular schreiben muss, möchte ich diese natürlich auch irgendwo speichern können. Die Daten in meiner Klasse „Artikel“ sind ziemlich flüchtig und mit dem Schließen der Anwendung sind auch die neu angelegten Artikel wieder weg. Mit der Methode New werden nur neue Instanzen der Klasse erzeugt und die Funktion GetBeispielArtikel erzeugt eine Collection der Klasse.

Schon bevor ich die erste Zeile Code in Visual Studio geschrieben habe war klar, dass alle Daten in Form von XML-Dokumenten gespeichert werden sollen. Richtig spannend wird es, da die Logik für die Daten, von der für die Anzeige getrennt werden soll. In meiner App sollen aber die Daten auch ohne das explizit auf einen Button Speichern gedrückt wird in die entsprechenden Dateien geschrieben werden. Dazu komme ich später, weil dafür muss ich in meiner kleinen App ein Model View ViewModel (MVVM) umsetzen.

Jetzt geht es aber fürs erste darum, wo werden meine Artikeldaten überhaupt gespeichert. Der einfachste Weg wäre sicherlich das Anwendungsverzeichnis zu benutzen. Persönlich mag ich solche Lösungen nicht. Gerade Windows 10 Apps haben hier ein paar richtig deftige Besonderheiten. Ich habe mich daher dafür entschieden, die Daten und Einstellungen der Software im Ordner „Eigene Dateien“ unter zu bringen. Das hat den Vorteil, dass wenn der Benutzer die Anwendung deinstalliert und wieder installiert, alle Einstellungen und Daten vorhanden bleiben. Der Nachteil ist, das der Anwender auf die Idee kommen könnte in den Dateien herum zu schnüffeln oder sie gar zu löschen. Bekanntlich muss man aber einen Tod sterben und ich habe mich hier für den letzteren entschieden.

Jeder Artikel ist ein Objekt mit diversen Eigenschaften. Aus den einzelnen Eigenschaften des Artikel ergibt sich damit der folgende Aufbau meiner Artikelliste.xml:

Damit ich jetzt aus meiner App so eine wohl geformte XML-Datei erzeugen kann, sind einige Handgriffe im Vorfeld notwendig. Zum ersten muss ich meiner App erlauben auf den Ordner Eigene Dateien zuzugreifen. Das wird im Package.appxmanifest gemacht. Dafür muss dort der Code um die Zeile  <uap:Capability Name=“documentsLibary“ /> ergänzt werden.

Jetzt können wir im Bereitstellungspaket Package.appxmanifest die Deklaration für den Dateityp XML hinterlegen.

2016-05-25 09_06_47-RechnungEasyApp - Microsoft Visual Studio

So jetzt wird es spannend. Erstmal brauche ich ein XML-Dokument. Null Problemo – Das läuft wie gehabt über die XmlDocument Klasse aus System.Xml. Root Element anlegen und die Kinder hinterher, das ist nicht schwer. Aber wie wird jetzt dieses XML-Dokument gespeichert?

Also kleines Code-Fragment ist jetzt für das Speichern des XML-Dokuments verantwortlich. Zuerst wird der Speicherort festgelegt. Anschließend wird die Datei erstellt, sofern sie nicht vorhanden ist und gleichzeitig geöffnet. Danach wird der Stream zu schreiben erzeugt und ganz zum Schluss die Datei mit der Methode Save(Stream) gespeichert. Das kann in den nächsten Tagen noch ziemlich heiter werden mit meiner kleinen App.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.