Save & recuperation des settings dans un fichier xml

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 558 fois - Téléchargée 42 fois

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

Ajouter un commentaire

Commentaires

Messages postés
2
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
30 janvier 2009

j'ai besoin d'un exemple please j'ai pas compris si tu peus je veus le programme
Messages postés
310
Date d'inscription
jeudi 4 septembre 2003
Statut
Membre
Dernière intervention
9 juin 2005

merci je vais le transformer en c# car je ne bosse pas sous VB.NET mais c'est vraiment cool.
Messages postés
113
Date d'inscription
vendredi 5 mars 2004
Statut
Membre
Dernière intervention
11 février 2008

ca c super cool , je teste des que j'ai le tps car c vrai que les .ini je me suis galere a tt comprendre, maintenant on va vers l'evolution.

VIVE LE .NET !!
Messages postés
57
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 septembre 2008
1
Encore une fois je tombe sur LA source que je recherchais depuis longtemps par hasard ...

en plus ça marche et c'est nikel ,

hop dans le favoris au cas ou ;]

Bravo et merci beaucoup !!
Messages postés
2
Date d'inscription
vendredi 7 mars 2003
Statut
Membre
Dernière intervention
7 mars 2003

snif :(
vb.NET toujours vb.NET ... :(
haaaa si ça pouvais marcher sur VB6 (*rêveur*)
Afficher les 7 commentaires

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.