Save & recuperation des settings dans un fichier xml

Contenu du snippet

Vu que les Fichiers Ini sont petit à petit oublié et que la base de registre ne répond pas toujours à nos attentes (récupération facile des paramètres d'une application), pourquoi ne pas utiliser les fichiers XML comme base de sauvegarde des paramètres ...

Voici donc un exemple qui sauvegarde le contenu d'une ListView et quelque paramètre dans un fichier XML.

Source / Exemple :


' à coller dans un fichier de type module de code
'
' ©2002  Icem@n

Imports System
Imports System.IO
Imports System.Xml

Module modSettingXML

#Region "  SettingsReader + SettingsWriter  "
    Public Sub SaveSettings(ByVal lvwForSave As ListView, ByVal strFileName As String)
        Try
            Dim doc As New System.Xml.XmlDataDocument()

            ' crée une table de settings "Générale" qui ne contiendras qu'un record ...
            doc.DataSet.Tables.Add("Settings")
            doc.DataSet.Tables("Settings").Columns.Add("Program", System.Type.GetType("System.String"))
            doc.DataSet.Tables("Settings").Columns.Add("Version", System.Type.GetType("System.String"))
            ' ajout du record contenant les Settings "Générale"
            Dim objaNewRow(1) As Object
            objaNewRow(0) = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name.ToString()
            objaNewRow(1) = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()
            doc.DataSet.Tables("Settings").Rows.Add(objaNewRow)

            ' Crée la table pour sauvegarder le contenu de ma ListView
            doc.DataSet.Tables.Add("ProcessLst")
            doc.DataSet.Tables("ProcessLst").Columns.Add("Checked", System.Type.GetType("System.Boolean"))
            doc.DataSet.Tables("ProcessLst").Columns.Add("FromText", System.Type.GetType("System.String"))
            doc.DataSet.Tables("ProcessLst").Columns.Add("FromBegin", System.Type.GetType("System.String"))
            doc.DataSet.Tables("ProcessLst").Columns.Add("FromEnd", System.Type.GetType("System.String"))
            doc.DataSet.Tables("ProcessLst").Columns.Add("ToText", System.Type.GetType("System.String"))

            ' Sauvegarde chaque ligne de ma ListView
            Dim itmItem As ListViewItem
            Dim objaNewData(4) As Object
            For Each itmItem In lvwForSave.Items
                objaNewData(0) = itmItem.Checked
                objaNewData(1) = itmItem.Text
                objaNewData(2) = itmItem.SubItems(1).Text
                objaNewData(3) = itmItem.SubItems(2).Text
                objaNewData(4) = itmItem.SubItems(3).Text

                doc.DataSet.Tables("ProcessLst").Rows.Add(objaNewData)
            Next
            ' Ecrit le Fichier XML
            doc.DataSet.WriteXml(strFileName)
        Catch e As Exception
            MsgBox(e.ToString)
        End Try
    End Sub

    Public Sub LoadSettings(ByVal lvwForSave As ListView, ByVal strFileName As String)
        Dim doc As New System.Xml.XmlDataDocument()
        ' Lits le fichier de Settings
        Try
            doc.DataSet.ReadXml(strFileName)
        Catch e As Exception
            MsgBox(e.ToString)
            Exit Sub
        End Try

        ' Verifie que la Table Settings Existes
        If doc.DataSet.Tables.Contains("Settings") Then
            Try
                ' récupère les settings Générales
                ' Inutile mais pour voir comment on doit faire
                Dim strPgm As String
                Dim strVersion As String
                strPgm = doc.DataSet.Tables("Settings").Rows(0).Item("Program")
                strVersion = doc.DataSet.Tables("Settings").Rows(0).Item("Version")
            Catch e As Exception
                MsgBox(e.ToString)
            End Try
        End If

        ' Verifie que la Table ProcessLst Existes
        If doc.DataSet.Tables.Contains("ProcessLst") Then
            Try
                ' récupère les ligne de la ListView
                Dim lstItem As ListViewItem
                Dim rowEach As DataRow
                For Each rowEach In doc.DataSet.Tables("ProcessLst").Rows
                    lstItem = New ListViewItem()
                    lstItem.Checked = rowEach("Checked")
                    lstItem.Text = rowEach("FromText")
                    lstItem.SubItems.Add(rowEach("FromBegin"))
                    lstItem.SubItems.Add(rowEach("FromEnd"))
                    lstItem.SubItems.Add(rowEach("ToText"))

                    lvwForSave.Items.Add(lstItem)
                    lstItem = Nothing
                Next
            Catch e As Exception
                MsgBox(e.ToString)
            End Try
        End If
    End Sub
#End Region
End Module

Conclusion :


Nouvelle Version :
+ de commentaires.
et gestions des erreurs.
n'hésité pas à laisser vos commentaires et idées ...

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.