構成ファイルの簡単な読み込み書き込み方法について

Cc440847.download(ja-jp,MSDN.10).gif サンプル コードのダウンロード (vbmigtips_Config.exe, 94.7 KB)

Visual Basic .NET では、アプリケーションの情報を XML 形式で管理するアプリケーション構成ファイルという機能があります。そこで今回は、アプリケーション構成ファイルの設定方法や読み込み、書き込みなどの方法について紹介します。

まず、アプリケーション構成ファイルの設定を行います。[プロジェクト]メニューの[新しい項目の追加]を選択し、ダイアログの[テンプレート]から[アプリケーション構成ファイル]を選びます。ファイル名を入力し (今回は「App.config」です。)、「開く」ボタンを選択することで、アプリケーション構成ファイルが追加されます。追加したアプリケーション構成ファイル (App.config) は、以下のようになっています。

 Cc440847.Config_fig01(ja-jp,MSDN.10).gif
 図1

構成ファイルへデータを書き込む場合、要素を追加し、さらにその中に要素を追加していきます。たとえば、Application Name キーのデータ「MyApplication」を書き込む場合、以下のように記述します (太字をリスト1 に追加します)。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Application Name" value="MyApplication" />
</appSettings>
</configuration>

リスト1

アプリケーション構成ファイルに書き込まれたデータを読み込むには、ConfigurationSettings.AppSettings プロパティを使用します。実装コードは以下のとおりです。

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
MessageBox.Show("Application Name = " & _
System.Configuration.ConfigurationSettings.AppSettings("Application Name"))
End Sub

リスト2

ConfigurationSettings.AppSettings プロパティで、要素構成セクションの構成設定を取得します。上記 (リスト2) の「System.Configuration.ConfigurationSettings.AppSettings("Application Name")」では、Application Name キーのデータを取得します。上記を実装し、図1 の「読み込み」ボタンをクリックすると、Application Name キーのデータ「MyApplication」を取得し、メッセージボックスで表示します (図2)。

 Cc440847.Config_fig02(ja-jp,MSDN.10).gif
 図2

 Cc440847.Config_fig03(ja-jp,MSDN.10).gif
 図3

これまで、アプリケーション構成ファイルの設定と読み込みの方法について紹介しました。続いては、リスト1 のアプリケーション構成ファイルに保存されているデータの変更や追加について紹介します。

今回は、Application Name キーのデータを フォーム (図2) の Name プロパティの値に変更します。また、フォームの Width プロパティと Height プロパティの値をアプリケーション構成ファイルに追加します。実装コードは以下のとおりです。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim asm As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()
Dim appConfigPath As String
appConfigPath = System.IO.Path.GetDirectoryName(asm.Location) + "\Config.exe.config"
Dim doc As System.Xml.XmlDocument = New System.Xml.XmlDocument
doc.Load(appConfigPath)
Dim node As System.Xml.XmlNode = doc("configuration")("appSettings")

Dim n As System.Xml.XmlNode
For Each n In doc("configuration")("appSettings")
If n.Name = "add" Then
If n.Attributes.GetNamedItem("key").Value = "Application Name" Then
n.Attributes.GetNamedItem("value").Value = Me.Text
End If
End If
Next

Dim newNode As System.Xml.XmlElement = doc.CreateElement("add")
newNode.SetAttribute("key", "Form Size")
newNode.SetAttribute("value", Me.Width & "," & Me.Height)
node.AppendChild(newNode)
doc.Save(appConfigPath)
End Sub

リスト3

アプリケーション構成ファイルを XML DOM に読み込むため XmlDocument クラスを使用します。リスト3 の「Dim asm As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()」では、アプリケーションのアセンブリ情報を取得し、「appConfigPath = System.IO.Path.GetDirectoryName(asm.Location) + "\Config.exe.config"」で構成ファイルのフルパスを取得します。ここでは、アプリケーションをビルドすると作成される、プロジェクト名.exe.congif ファイルを指定します。「doc.Load(appConfigPath)」で構成ファイルをXML DOM に読み込みます。
「For Each n In doc("configuration")("appSettings")...Next」部分では appSettings 要素内を列挙し、Application Name キーの値をフォームの Name プロパティ値に変更します。「Dim newNode As System.Xml.XmlElement = doc.CreateElement("add") 」では新しい add 要素を作成し、「newNode.SetAttribute("key", "Form Size")」で新しいキー Form Size を設定します。さらに「newNode.SetAttribute("value", Me.Width & "," & Me.Height)」で Form Size キーにフォームの Width プロパティと Height プロパティの値を設定します。
最後に「doc.Save(appConfigPath)」で変更されたアプリケーション構成ファイルを保存します。リスト3 を実装し図2 の「書き込み」ボタンをクリックすると、図4 のようにフォームの Name プロパティ、Width プロパティと Height プロパティのデータがファイルに書き込まれます。

 Cc440847.Config_fig04(ja-jp,MSDN.10).gif
 図4

図4 は、アプリケーションをビルドすると作成される構成ファイルです。この構成ファイルは、プロジェクト名.exe.congif の名で自動作成されます。また、自動作成された際、このファイルは、app.config ファイルの内容が格納されます。