更新日: 2005 年 11 月 1 日

 

このコンテンツのポイント

  • XmlTextWriter クラスを利用した簡単な XML ファイルの作成
  • XMLTextReader クラスを利用した簡単な XML ファイルの読み込みとエレメント値の取得

今回紹介するコード

 

Visual Basic
Sub Main (ByVal args()As String)
            'XMLファイルの書込み
            Dim xmlWtr As New XmlTextWriter(args(0).Trim(), System.Text.Encoding.UTF8)
            xmlWtr.WriteStartElement("Item")            '<Item>
            xmlWtr.WriteString("Element Value")
            xmlWtr.WriteEndElement()                    '</Item>
                  xmlWtr.Close()
           ' XMLファイルの読取り
            Dim xmlRdr As New XmlTextReader(args(0).Trim())
            xmlRdr.Read()
            Console.WriteLine("タグ名:" + xmlRdr.LocalName)
            Console.WriteLine("値:" + xmlRdr.ReadString())
             xmlRdr.Close()
       End Sub
 

目次

はじめに
コンソール アプリケーションの準備をする
起動時のコマンドラインを指定する
コードを実装する
実行する
おわりに


はじめに

.NET Framework クラス ライブラリの中の System.Xml 名前空間を使用すると、従来よりも手軽に XML データをプログラムから操作できるようになります。ここではコンソール アプリケーションのコマンド ライン引数で指定したパスに、シンプルな XML ファイルを作成し、そのファイルを読み取る処理を行ってみます。

コンソール アプリケーションの準備をする

Visual Studio 2005 を起動して、新しいプロジェクトを作成します([ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします)。

ここでは、プロジェクトの種類ペインで [Visual Basic] を選択し、テンプレート ペインで、[コンソール アプリケーション] を選択します。[プロジェクト名] ボックスに 「XmlWR」 と入力します。[場所] ボックスには、「C:\Test」 というパスを入力します。 ここで、[OK] ボタンをクリックして、プロジェクトを作成します。

これで XMLファイルの作成と読み込みを行うアプリケーションの開発の準備が完了しました。

図 1. XML ファイル作成のためのプロジェクトを新規に作成

起動時のコマンドラインを指定する

Visual Studio から作成したコンソール アプリケーションに引数を渡すように設定します。

まず、ソリューション エスクプローラのツリー上で、XmlWR プロジェクトを右クリックし、[プロパティ] をクリックします。すると、プロジェクトのプロパティ ページが開きます (Visual Studio 2005 ではプロジェクト デザイナと呼びます)。ここで、[デバッグ] タブをクリックし、以下のようにコマンド ライン引数として「C:\Test\Sample.xml」と指定します。

図 2. 起動時コマンドラインの指定

コードを実装する

Module1.vb ファイルのコード エディタに切り替え、ソースコードの先頭に、Imports 文を使用して System.Xml 名前空間の使用を宣言します。この宣言によって、名前空間の修飾を省いたクラス名の表記だけで、System.Xml 名前空間内のクラス名が使用可能になります。

Visual Basic
Imports System.Xml
 

Main メソッドにコマンド ライン引数が渡るように、args 引数を以下のように記述して、Main メソッドを修正します。

Visual Basic
Sub Main(ByVal args() As String)
 

次に Main メソッドの内部を記述します。

まず、XML ファイルを出力する部分を以下のように記述ましす。このコードでは、コマンド ライン引数で受け取ったパスを XmlTextWriter クラス コンストラクタの引数として渡し、このオブジェクトをインスタンス化します。あとは WriteStartElement メソッドでルート要素の開始タグを作成し、WriteString メソッドで単純な文字列を書込みます。WriteEndElement メソッドを呼び出すと WriteStartElement で開始された要素の終了タグを書込みます。Close メソッドを呼び出すことにより、指定した XML ファイルが閉じ、確実にディスクに書き込まれます。

Visual Basic
'XMLファイルの書込み
     Dim xmlWtr As New XmlTextWriter(args(0).Trim(), System.Text.Encoding.UTF8)
     xmlWtr.WriteStartElement("Item")            '<Item>
     xmlWtr.WriteString("Element Value")
     xmlWtr.WriteEndElement()                    '</Item>
     xmlWtr.Close()
 

次に読み込みの部分を記述します。

次に同じように XmlTextReader クラスをインスタンス化して、読み込み用のオブジェクトを作成します。Read メソッドを呼び出すことで、 一つ分の要素を読み込みます。 LocalName プロパティでは要素名が参照でき、 ReadString メソッドによって、内部の文字列部分が参照できます。ここでは、単純にコンソールへ出力することにします。最後に書込みと同様に Close メソッドを呼び出し、内部的なファイル リソースを開放します。

Visual Basic
'XMLファイルの読取り
     Dim xmlRdr As New XmlTextReader(args(0).Trim())
     xmlRdr.Read()
     Console.WriteLine("タグ名:" + xmlRdr.LocalName)
     Console.WriteLine("値:" + xmlRdr.ReadString())
     xmlRdr.Close()
 

実行する

コードの記述が完了したら、実行します。

アプリケーションを実行させるには [Ctrl] キーを押しながら [F5] キーを押すか、[デバッグ] メニューの [デバッグなしで開始] をクリックします。

コンソール画面が表示され、ファイルから読み取った値が確認できます。

図 3. アプリケーションを実行する

また、C:\Test フォルダに Sample.xml ファイルが作成されているはずです。エスクプローラ上で、このファイルをダブルクリックすると、以下のようにインターネット エスクプローラで確認することが可能です。

図 4. 作成した XML ファイルの確認

おわりに

XmlTextReader と XmlTextWriter は、XML の読み込みと書き込みを簡単に行うことができ、XML データに対して、シーケンシャルにアクセスする (順次アクセスする) ことができます。一度に、XML データ ファイルをメモリにロードしないので、大規模な XML ファイルの作成や読み取りの際にも、メモリ リソースの節約になります。なお、今回紹介したクラスのほかに、従来のDOM (Document Object Model) を利用するための XmlDocument クラスも用意されています。こちらは、一度に XML データ ファイルをメモリに読み込みまずが、XML データ内の任意の要素にランダム アクセスできます。


Code Recipe

ページのトップへ