martedì 1 dicembre 2009

VB.NET : Creare un file XML con gli appSettings del file di configurazione utilizzando LINQ

Questo piccolo tip mostra come è possibile creare un file XML in cui ricopiare le chiavi della sezione appSettings del file di configurazione dell’applicativo utilizzando LINQ ed in particolar modo la funzionalità di XML Literal del VB.NET.

La funzione in esame è la seguente:

Public Function CreateLocalConfigurationFile(ByVal fileName As String) As Boolean
    Dim retval = True
    Dim xdoc As XDocument = _
            <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
            <configuration>
                <%= From key In ConfigurationManager.AppSettings.Keys _
                    Select <key name=<%= key %> value=<%= ConfigurationManager.AppSettings(key.ToString()) %>/> _
                %>
            </configuration>
    Try
        Dim docPath = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
        xdoc.Save(fileName)
    Catch ex As Exception
        retval = False
    End Try
    Return retval
End Function


In sostanza viene creta un’istanza della classe XDocument utilizzando XML LIteral in cui utilizziamo una query LINQ sulla collection ApSettings della classe ConfigurationManager.



Per poter utilizzare la classe ConfigurationManager è necessario referenziare la libreria System.Configuration.



In pratica, supponendo che il file di configurazione abbia la seguente sezione appSettings:



<configuration>
  <appSettings>
    <add key="key1" value="value1"/>
    <add key="key2" value="value2"/>
    <add key="key3" value="value3"/>
    <add key="key4" value="value4"/>
  </appSettings>
</configuration>


Si ottiene il seguente file XML:



<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<configuration>
  <key name="key1" value="value1" />
  <key name="key2" value="value2" />
  <key name="key3" value="value3" />
  <key name="key4" value="value4" />
</configuration>


Ovviamente è possibile utilizzare l’algoritmo per scrivere su file XML qualsiasi collezione di elementi.



Nessun commento: