Dieses Tutorial soll Wege aufzeigen, wie man leicht auf Text und ini-Dateien verzichten kann.
Viele Anfänger versuchen alles und jedes in Text - bzw. Ini-Dateien zu speichern.
Das es in Zeiten des dotNet Frameworks auch deutlich einfacher geht - möchte ich mit diesem Tutorial zeigen.
Um dem Ganzen einen Rahmen geben zu können, programmieren wir in diesem Tutorial eine Adressverwaltungsprogramm, welches es dann auch als Download geben wird.
Eine Adresse besteht - in unserem Fall - aus Name, Straße, Ort, Telefonnummer.
Da wir möglichst Objekt Orientiert Programmieren möchten, packen wir die Daten in eine Klasse.
Diese wird dann komplett gespeichert.
1. XML-Serialisieren:
Der klare Vorteil des Serialisieren liegt darin, dass ein verhältnismäßig kleiner Code zum Speichern und Laden der Dateien geschrieben werden muss.
Ein weiterer Vorteil des Serialisierens besteht darin, dass beim Verändern der zu speichernden Daten keine Änderungen am eigentlichen Code (speichern und laden)
vorgenommen werden muss.
Hier der Einfachheit halber der Code der (Daten)Klasse:
Was beim XML-Serialisieren zu Beachten ist:
1. Die zu speichernden Informationen sollten sich in einer eigenen Klasse befinden.
2. Diese Klasse MUSS über eine leere Sub New verfügen.
3. Jedes zu speichernde Objekt muss über eine Property nach Aussen hin zugänglich gemacht werden.
Nun der Code zum Speichern bzw. Laden (Serialisieren):
Die Aufrufe für das Speichern und Laden sehen dann in etwa so aus.
Speichern:
Laden:
Wie mann sehen kann - alles sehr einfach.
Und wie gesagt, verändert man die Klasse - welche Serialisiert werden soll - ändert sich nichts am Code zum Speichern
und alte Dateien können nach wievor geladen werden.
2.XML-Dateien mit XMLDocument erstellen:
Tutorial folgt später
Anmerkung:
Da es unter VS2008 erstellt wurde, kann es nicht mit VS2005 geöffnet werden.
---
Das Original dieses Tutorial's ist auf dieser Webseite veröffentlicht. Vielen Dank an unser Mitglied mikeb69
Die Seite gibt es seit langem nicht mehr.
Viele Anfänger versuchen alles und jedes in Text - bzw. Ini-Dateien zu speichern.
Das es in Zeiten des dotNet Frameworks auch deutlich einfacher geht - möchte ich mit diesem Tutorial zeigen.
Um dem Ganzen einen Rahmen geben zu können, programmieren wir in diesem Tutorial eine Adressverwaltungsprogramm, welches es dann auch als Download geben wird.
Eine Adresse besteht - in unserem Fall - aus Name, Straße, Ort, Telefonnummer.
Da wir möglichst Objekt Orientiert Programmieren möchten, packen wir die Daten in eine Klasse.
Diese wird dann komplett gespeichert.
1. XML-Serialisieren:
Der klare Vorteil des Serialisieren liegt darin, dass ein verhältnismäßig kleiner Code zum Speichern und Laden der Dateien geschrieben werden muss.
Ein weiterer Vorteil des Serialisierens besteht darin, dass beim Verändern der zu speichernden Daten keine Änderungen am eigentlichen Code (speichern und laden)
vorgenommen werden muss.
Hier der Einfachheit halber der Code der (Daten)Klasse:
VB.NET-Quellcode
- Imports System.IO
- Imports System.Xml.Serialization
- Public Class ClassAdresses
- ''' Structure welche eine einzelne Adresse enthält.
- '''
- Public Structure adress
- Public name As String
- Public street As String
- Public place As String
- Public telefon As String
- Public Sub New(ByVal n As String, ByVal s As String, ByVal p As String, ByVal t As String)
- name = n
- street = s
- place = p
- telefon = t
- End Sub
- End Structure
- ''' Liste aller Adressen.
- ''' Eine List(Of ...) hat viele Vorteile gegenüber einem normalen Array.
- Private _adresses As New List(Of adress)
- ''' Beim verwenden des XMLSerialisieren MUSS in der zu speichernden Klasse
- ''' muss eine Leere Sub New vorhanden sein !
- '''
- Public Sub New()
- End Sub
- ''' Hinzufügen von neuen Adressen.
- '''
- Public Sub Add(ByVal name As String, ByVal street As String, ByVal place As String, ByVal telephone As String)
- _adresses.Add(New adress(name, street, place, telephone))
- End Sub
- ''' Gibt die Liste aller Adressen zurück oder setzt diese.
- '''
- '''
- ''' Beim XML-Serialisieren muss jedes zu speichernde Objekt über eine Property bereitgestellt werden.
- Public Property AllAdresses() As List(Of adress)
- Get
- Return _adresses
- End Get
- Set(ByVal value As List(Of adress))
- _adresses = value
- End Set
- End Property
- End Class
Was beim XML-Serialisieren zu Beachten ist:
1. Die zu speichernden Informationen sollten sich in einer eigenen Klasse befinden.
2. Diese Klasse MUSS über eine leere Sub New verfügen.
3. Jedes zu speichernde Objekt muss über eine Property nach Aussen hin zugänglich gemacht werden.
Nun der Code zum Speichern bzw. Laden (Serialisieren):
VB.NET-Quellcode
- Public Class CollectionSerialized
- ''' Funktion zum Speichern - via XML-Serialisieren.
- '''
- Shared Sub SaveXML(ByVal c As ClassAdresses, ByVal filename As String)
- 'Um die Daten Speichern zu können muss das Objekt an den XMLSerializer übergeben werden.
- 'In diesem Fall die Instanz der Klasse ClassDresses
- Dim xml As New XmlSerializer(GetType(ClassAdresses))
- Using fs As New FileStream(filename, FileMode.Create)
- xml.Serialize(fs, c)
- fs.Close()
- End Using
- End Sub
- ''' Funktion zum Laden - via XML-Serialisieren.
- '''
- '''
- Shared Function LoadXML(ByVal filename As String) As ClassAdresses
- 'Um die Daten laden zu können muss der Typ der Klasse bekannt sein - hier ClassAdresses
- 'Auch der Rückgabewert muss vom Typ der selben Klasse sein.
- Dim xml As New XmlSerializer(GetType(ClassAdresses))
- Dim ret As ClassAdresses
- Using fs As New FileStream(filename, FileMode.Open)
- ret = xml.Deserialize(fs)
- fs.Close()
- End Using
- Return ret
- End Function
- End Class
Die Aufrufe für das Speichern und Laden sehen dann in etwa so aus.
Speichern:
Laden:
Wie mann sehen kann - alles sehr einfach.
Und wie gesagt, verändert man die Klasse - welche Serialisiert werden soll - ändert sich nichts am Code zum Speichern
und alte Dateien können nach wievor geladen werden.
2.XML-Dateien mit XMLDocument erstellen:
Tutorial folgt später
Anmerkung:
Da es unter VS2008 erstellt wurde, kann es nicht mit VS2005 geöffnet werden.
---
Die Seite gibt es seit langem nicht mehr.
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „mikeb69“ ()