VB.NETでXMLファイルを読み込む方法について説明する。
XMLファイルの読み込み方法は、何通りかの方法があるが、単純な方法で説明する。

以下、サンプル。

《XMLファイル》
1.以下のXMLをメモ帳に貼り付ける。
2.ファイル名を「Settings.xml」として保存する。
※ファイルの種類を"すべての形式"にして保存すること!

<?xml version="1.0" encoding="utf-8"?>
<Settings>
<AppName>XMLの読込みサンプル</AppName>
<Input>
  <File>"C:\Test\Input.txt"</File>
 </Input>
 <Output>
  <File>"C:\Test\Output.txt"</File>
 </Output>
</Settings>
《コード》
Public Class Settings
 Public Shared Sub Main()
  'XMLファイルのファイルパスを指定する
  'サンプルでは、実行ファイルと同じ場所に保管している

  Dim xmlRdr As New XmlTextReader("./Setting.xml")

  'XMLファイルを読み込む
  While xmlRdr.Read()
   Console.WriteLine("タグ階層=" & xmlRdr.Depth())
   Console.WriteLine("開始タグ=" & xmlRdr.Name)
   Console.WriteLine("値(Value)=" & xmlRdr.Value())
   Console.WriteLine("値(ReadString)=" & _
    xmlRdr.ReadString())
  End While
 End Sub
End Class

このサンプルを実行すると、開始タグ、値(Value)、値(ReadString())の関係がおかしいことに気が付くと思う。
開始タグが表示されている場合、値(Value)は何も表示されず、値(ReadString())は表示される。
また、値(Value)が表示されている場合、開始タグと値(ReadString())は表示されない。

これは、XMLファイルを読む際に開始タグ、値、終了タグは、別のタイミングで読み込まれるために発生する。
以下のサンプルを動作させてみると、別のタイミングで読み込んでいることが良く分かる。

Public Class Settings
 Public Shared Sub Main()
  '実行ファイルと同じパスにSetting.xmlを用意する
  Dim xmlRdr As New XmlTextReader("./Setting.xml")

  'XMLファイルを読み込む
  While xmlRdr.Read()
   Select Case xmlRdr.NoeType
    Case XmlNodeType.Element
     Console.WriteLine("開始タグ=" & xmlRdr.Name)
     'タグ読み込み時に値を取得する方法
     Console.WriteLine("値(ReadString())=" & _
      xmlRdr.ReadString())
    Case XmlNodeType.Text
     Console.WriteLine("値(Value)=" & xmlRdr.Value)
    Case XmlNodeType.EndElement
     Console.WriteLine("終了タグ=" & xmlRdr.Name)
   End Select
  End While
 End Sub
End Class

【補足事項】
・NodeTypeプロパティで読み込んだノードの種類を識別できる。
・ReadString()メソッドは、読み込んだノードが開始タグの場合に値を取得するメソッド。
 →Textや終了タグを読み込んでいる場合には、値は取得できない。
・Depthプロパティを利用すると、ノードの階層を知ることができる。
・XMLファイルの読み込み方法には、他にもXMLDocumentを利用した読み込み方法等がある。