執筆者: インフラジスティックス・ジャパン株式会社 池原 大然

動作確認環境: Visual Studio 2010、.NET Framework 2.0、Windows 7 Ultimate 64 bit


System.Xml.XmlTextWriter クラス、System.Xml.XmlTextReader クラス を利用することで、XML データを格納するストリームまたはファイルに対し、高速に前方向に書き込み、読み取りを行うことが可能です。要素を書き込む場合は、WriteStartElement メソッド を使用し要素を開始し、WriteEndElement メソッド を用いて閉じます。属性値を設定する場合は WriteAttributeString メソッド を使用します。一方、XmlTextReader クラス を使用し XML データを読み込む場合、Read メソッドにて次のノードを読み取ることが可能です。

XML 形式のデータを作成しファイルに保存、更に読み取るサンプル コードは下記の通りです。

Visual Basic
Imports System.Xml 
Imports System.Text 
 
Module Module1 
 
    Sub Main() 
 
        ' 書き込みファイルの指定 
        Dim xtw As New XmlTextWriter("CodeRecipe.xml", Encoding.UTF8) 
        ' エレメント名の設定 
        xtw.WriteStartElement("CodeRecipe") 
        xtw.WriteStartElement("Article") 
        ' 属性値の指定 
        xtw.WriteAttributeString("category""逆引きサンプルコード") 
        ' テキストの書き込み 
        xtw.WriteString("XmlReader, XmlWriter の使用") 
        ' 要素を閉じる 
        xtw.WriteEndElement() 
        xtw.WriteEndElement() 
        xtw.Close() 
 
        ' 読み取りファイルの指定 
        Dim xtr As New XmlTextReader("CodeRecipe.xml") 
 
        While xtr.Read() 
            Select Case xtr.MoveToContent() 
                Case XmlNodeType.Element 
                    If xtr.HasAttributes Then 
                        Console.WriteLine("エレメント: {0} 属性を {1} つ所持", xtr.LocalName, xtr.AttributeCount) 
                    Else 
                        Console.WriteLine("エレメント: {0}", xtr.LocalName) 
                    End If 
                Case XmlNodeType.Text 
                    Console.WriteLine("テキスト: {0}", xtr.ReadString()) 
                Case Else 
 
            End Select 
        End While 
        xtr.Close() 
        Console.ReadKey() 
    End Sub 
End Module 

上記のコードでは MoveToContent メソッド を使用し、Element もしくは Text を判定しています。

実行結果並びに、作成した XML ファイルをブラウザーで開いた場合は下記の通りとなります。

エレメント: CodeRecipe
エレメント: Article 属性を 1 つ所持
テキスト: XmlReader, XmlWriter の使用

図 1

関連リンク


Code Recipe

ページのトップへ