Risolto!!!
Avevo la soluzione sotto gli occhi ma la birra mi impediva la vista...
Prima di tutto il file in questione non era app.config ma user.config![]()
![]()
Dagli esempi/soluzioni che avevo trovato in rete non capivo cosa leggere e come dal file xml.
Dopo una breve studiatina sulla formattazione degli xml ho avuto l' illuminazione.
Con un file come quello che segue che ho utilizzato come test:
i nodi vanno letti come delle directory di un File System tipo:codice:<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > <section name="test.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" /> </sectionGroup> </configSections> <userSettings> <test.My.MySettings> <setting name="setting1_nome" serializeAs="String"> <value>setting1_valore</value> </setting> <setting name="setting2_nome" serializeAs="String"> <value>setting2_valore</value> </setting> <setting name="setting3_nome" serializeAs="String"> <value>setting3_valore</value> </setting> </test.My.MySettings> </userSettings> </configuration>
/configuration/configSections/sectionGroup o /configuration/userSettings/test.My.MySettings
dove ogni nodo a dei sottonodi con delle proprietà.
Penso di aver spiegato malissimo il concetto...di seguito il codice che ho utilizzato con un file user.config come quello sopra in cui prima ottengo il nome del programma che lo ha generato e da questo verifico e salvo le impostazioni che mi servono.
Premessa:
l' ambiente di sviluppo è Microsoft Visual Basic 2010 Express
il file user.config deve seguire quella formattazione perchè il codice include percorsi assoluti
ci sono da gestire tutte le eccezioni del caso come valori "null" o impostazioni che variano
per esempio da "string" a "decimal"
Eventuali pareri/consigli/critiche sono ben accetti.codice:Dim user_config_file As New Xml.XmlDocument ' file è il file user.config aperto con una openfiledialog user_config_file.Load(file) ' indico il percorso del nodo da leggere per ottenere il nome del programma che ha generato ' il file user.config Dim nome_programma_nodo As Xml.XmlNode = user_config_file.SelectSingleNode("/configuration/configSections/sectionGroup") ' variabile che conterrà il nome del programma Dim nome_programma_nodo_testo As String ' ottengo il nome del programma For a = 0 To nome_programma_nodo.ChildNodes.Count - 1 Step 1 nome_programma_nodo_testo = nome_programma_nodo.ChildNodes(a).Attributes("name").Value Next ' indico il percorso "user setting" più il nome del programma Dim node As Xml.XmlNode = user_config_file.SelectSingleNode("/configuration/userSettings/" & nome_programma_nodo_testo) ' variabile che conterrà il nome dell' impostazione Dim nome_impostazione As String ' variabile che conterrà il valore dell' impostazione Dim valore_impostazione As String ' leggo il nome del nodo ed il valore For b = 0 To node.ChildNodes.Count - 1 Step 1 nome_impostazione = node.ChildNodes(b).Attributes("name").Value valore_impostazione = node.ChildNodes(b).InnerText ' se il nome del nodo è uguale salvo il valore If nome_impostazione = "setting1_nome" Then My.Settings.setting1 = valore_impostazione End If If nome_impostazione = "setting2_nome" Then My.Settings.setting2 = valore_impostazione End If If nome_impostazione = "setting3_nome" Then My.Settings.setting3 = valore_impostazione End If Next
Ciao e scusate la lunghezza del post.
Vincenzo


Rispondi quotando