ssCAROのブログ

色んなとこで見つけたプログラムのメモ置き場っぽい

設定ファイルにINIをやめてXMLにする

INIファイルに慣れすぎて「今更、XMLなんて・・・」と思ってたけど勉強がてら設定ファイルをXMLにしてみる。

次のINIファイルを

[AlarmSetting]
OutputTime = 30

Temperature1_Output = True
Temperature1_HiHiValue = 98.0
Temperature1_HiValue = 95.0
Temperature1_LoValue = 85.0
Temperature1_LoLoValue = 82.0

Temperature2_Output = True
Temperature2_HiHiValue = 80.0
Temperature2_HiValue = 78.0
Temperature2_LoValue = 70.0
Temperature2_LoLoValue = 68.0

このようなXMLファイルにする
保存はUTF-8(BOM付)

<?xml version="1.0" encoding="utf-8"?>
<AlarmWatch>
  <AlarmSetting>
    <OutputTime>30</OutputTime>
    <Temperature1>
      <Output>True</Output>
      <HiHiValue>98.0</HiHiValue>
      <HiValue>95.0</HiValue>
      <LoValue>85.0</LoValue>
      <LoLoValue>82.0</LoLoValue>
    </Temperature1>
    <Temperature2>
      <Output>True</Output>
      <HiHiValue>80.0</HiHiValue>
      <HiValue>78.0</HiValue>
      <LoValue>70.0</LoValue>
      <LoLoValue>68.0</LoLoValue>
    </Temperature2>
  </AlarmSetting>
</AlarmWatch>

これをプログラムで読み書きする。

Dim path As String = "C:\AlarmWatch\AlarmWatch.xml"
Dim xdoc As XDocument = XDocument.Load(path)

'色々な読み込み
Dim value1 As Integer = xdoc.<AlarmWatch>.<AlarmSetting>.<OutputTime>.Value

Dim value2 As Boolean = xdoc.<AlarmWatch>.<AlarmSetting>.<Temperature1>.<Output>.Value

Dim elm3 = xdoc.<AlarmWatch>.<AlarmSetting>.<Temperature1>.<HiHiValue>
Dim value3 As Integer = elm3.Value

Dim value4 As Integer = xdoc.Element("AlarmWatch").Element("AlarmSetting").Element("Temperature1").Element("HiValue").Value

Dim elm5 As XElement = xdoc.Element("AlarmWatch").Element("AlarmSetting").Element("Temperature1")
Dim value5 As Integer = elm5.Element("LoValue").Value

'色々な書き込み
xdoc.<AlarmWatch>.<AlarmSetting>.<OutputTime>.Value = 25

Dim elm6 = xdoc.<AlarmWatch>.<AlarmSetting>.<Temperature1>.<HiHiValue>
elm6.Value = 98.5

xdoc.Element("AlarmWatch").Element("AlarmSetting").Element("Temperature1").Element("LoValue").Value = 80.0

'保存
xdoc.Save(path)