So-net無料ブログ作成

設定ファイルにINIをやめてXMLにする [VB.NET]

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)

nice!(0)  コメント(1)  トラックバック(0) 

nice! 0

コメント 1

通りすがり

<Temperature1>
<!-- 略 -->
</Temperature1>
<Temperature2>
<!-- 略 -->
</Temperature2>

とするよりも

<Temperature No="1">
<!-- 略 -->
</Temperature>
<Temperature No="2">
<!-- 略 -->
</Temperature>

としたほうが Temparature 要素を Listとか配列でデシリアライズできて、個人的に好みだったりします。
その場合、Temparatureの上位に1つ階層を増やす感じで。

<Temparatures>
<Temperature No="1">
<!-- 略 -->
</Temperature>
<Temperature No="2">
<!-- 略 -->
</Temperature>
</Temparatures>


by 通りすがり (2019-03-05 21:01) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。