Den aktuellen Zustand eines Objekts kann man in .NET 2.0 sehr leicht im XML-Format speichern. Man benötigt nur wenige Zeilen Code um auch sehr umfangreiche Objekte in eine Datei zu speichern. Dabei hilft uns die Klasse System.Xml.Serialization.XmlSerializer. Eine so erzeugte Datei kann jederzeit eben so leicht wieder in ein Objekt geladen werden.
Funktion zum Speichern eines Objekts: ''' <summary> ''' Der Inhalt des übergebenen Objekts wird im XML-Format ''' unter dem Speicherpfad gespeichert ''' </summary> ''' <typeparam name="T">Typ (Klasse) welche abgespeichert wird</typeparam> ''' <param name="Objekt">Objekt dessen Inhalt gespeichert wird</param> ''' <param name="Speicherpfad">Pfad unter welchem der Inhalt des ''' Objekts gespeichert wird, muss nicht mit xml enden</param> ''' <returns>Funktion erfolgreich durchgeführt</returns> ''' <remarks></remarks> Public Shared Function ObjektSpeichern(Of T)( _ ByVal Objekt As T, _ ByVal Speicherpfad As String) As Boolean Dim Serializer As System.Xml.Serialization.XmlSerializer Dim Stream As System.IO.FileStream = Nothing Try ' Stream zum Speichern öffen Stream = New System.IO.FileStream(Speicherpfad, _ IO.FileMode.Create) ' Übergebene Klasse in das XML-Format serialisieren Serializer = _ New System.Xml.Serialization.XmlSerializer( _ Objekt.GetType) ' Objekt abspeichern Serializer.Serialize(Stream, Objekt) ' Stream wieder schließen Stream.Close() Return True Catch ex As Exception If Not Stream Is Nothing Then Stream.Close() End If Debug.Print("Fehler" & ex.Message) Return False End Try End Function Funktion zum Laden einer Klasse: ''' <summary> ''' Übergebenes Objekt wird mit dem Inhalt der ''' übergebenen XML-Datei befüllt ''' </summary> ''' <typeparam name="T">Typ (Klasse) welche abgespeichert wird</typeparam> ''' <param name="Ladepfad">Pfad der XML-Datei, muss mit der ''' Klasse serialisierbar sein</param> ''' <param name="Objekt">Objekt welches mit dem Inhalt der XML-Datei ''' befüllt wird</param> ''' <returns>Funktion erfolgreich durchgeführt</returns> ''' <remarks></remarks> Public Shared Function ObjektLaden(Of T)( _ ByVal Ladepfad As String, _ ByRef Objekt As T) _ As Boolean Dim Serializer As System.Xml.Serialization.XmlSerializer Dim Stream As System.IO.FileStream = Nothing Try ' Stream zum Lesen öffen Stream = New System.IO.FileStream(Ladepfad, IO.FileMode.Open) ' Übergebene Klasse in das XML-Format serialisieren Serializer = _ New System.Xml.Serialization.XmlSerializer(Objekt.GetType) ' Objekt mit dem Inhalt der Datei befüllen Objekt = CType(Serializer.Deserialize(Stream), T) ' Stream wieder schließen Stream.Close() Return True Catch ex As Exception If Not Stream Is Nothing Then Stream.Close() End If Debug.Print("Fehler" & ex.Message) Return False End Try End Function Beispiel für das Speichern und Laden von Objekten Public Class Class1 Dim sTest1 As String Dim sTest2 As String Dim iTest1 As Integer Dim bTest1 As Boolean Public Property String1() As String Get Return sTest1 End Get Set(ByVal value As String) sTest1 = value End Set End Property Public Property String2() As String Get Return sTest2 End Get Set(ByVal value As String) sTest2 = value End Set End Property Public Property Integer1() As Integer Get Return iTest1 End Get Set(ByVal value As Integer) iTest1 = value End Set End Property Public Property Boolean1() As Boolean Get Return bTest1 End Get Set(ByVal value As Boolean) bTest1 = value End Set End Property End Class Wichtig ist, dass die Klasse, sowie die Propertys als Public deklariert werden. Fügen Sie dem Projekt jetzt noch eine Form mit zwei Buttons hinzu und benennen die Buttons "btnLaden" und "btnSpeichern". In der Codeansicht des Formulars fügen Sie nun bitte folgenden Code ein: Private Sub btnSpeichern_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnSpeichern.Click ' Objekt mit der Class1 zum Testen deklarieren Dim oSpeichern As New Class1 ' Objekt befüllen oSpeichern.Boolean1 = True oSpeichern.Integer1 = 1234 oSpeichern.String1 = "ABC" oSpeichern.String2 = "defg" ' Objekt auf dem Desktop speichern Dim sPfad As String sPfad = System.Environment.GetFolderPath( _ Environment.SpecialFolder.Desktop) sPfad = sPfad & "\Test.xml" ObjektSpeichern(Of Class1)(oSpeichern, sPfad) End Sub Private Sub btnLaden_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnLaden.Click ' Objekt mit der Class1 zum Testen deklarieren Dim oLaden As New Class1 ' Objekt mit der Datei auf dem Desktop befüllen Dim sPfad As String sPfad = System.Environment.GetFolderPath( _ Environment.SpecialFolder.Desktop) sPfad = sPfad & "\Test.xml" If IO.File.Exists(sPfad) Then ObjektLaden(Of Class1)(sPfad, oLaden) ' Inhalt des Testobjekts in das Direktfenster ausgeben Debug.Print(CStr(oLaden.Boolean1)) Debug.Print(CStr(oLaden.Integer1)) Debug.Print(oLaden.String1) Debug.Print(oLaden.String2) Else Debug.Print("Die Datei: " & sPfad & " ist nicht vorhanden") End If End Sub Fügen Sie der Form abschließend noch die beiden am Anfang aufgezeigten Funktion zum Laden und Speichern der Objekte hinzu (Function ObjektSpeichern und Function ObjektLaden). Wenn Sie nun auf den Button "btnSpeichern" klicken wird das Objekt, mit dem im Code bestimmten Inhalt, auf Ihrem Desktop unter Test.xml gespeichert. <?xml version="1.0"?> <Class1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <String1>ABC</String1> <String2>defg</String2> <Integer1>1234</Integer1> <Boolean1>true</Boolean1> </Class1> Durch Klick auf "btnLaden" wird ein leeres Objekt mit dem Inhalt der Test.xml befüllt. Dieser Tipp wurde bereits 18.739 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 sevZIP40 Pro DLL Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |