連載 .NETで簡単XML 第3回 XML文書を読み書きするプログラムの作成 |
Back Issue
|
||||
|
XML文書を読み込む
第2回 プログラムでXML文書を作成するでは、XML文書を書き出すプログラムを作成した。そこで、今回は読み込みに挑戦してみよう。XML文書を読み込む方法はいくつかあるが、今回はXmlReaderを使用する。
XML文書を読み込むプログラムは、書き出すプログラムに比べると作るのが難しい。なぜなら、書き出すときには項目の並び順をプログラム側で強制できるのに対して、既存のXML文書を読み込む際には、どんな項目がどんな順番で並んでいるのか、あらゆる可能性を考えなければならないからだ。これを回避するためには、スキーマを使って、並び順の妥当性を確認するという方法もあるが、ここではスキーマを使わないという前提で話を進めよう。
さて、XML文書を出力するために前回紹介したXmlTextWriterクラスがあったのと同じように、読み込み用のXmlTextReaderクラスも存在する。このクラスは、ファイル、ストリーム、テキストなどからXML文書を入力する機能を持つ。処理する順番は、XmlTextWriterクラスと同様に、前方から後方に向かって一直線(シーケンシャル)である。処理の流れを変えることはできない。このクラスは、抽象クラスのXmlReaderクラスに、それらの対象からの入力機能を実装したものである。もし、何か別の対象から入力したい場合は、XmlReaderクラスを継承して入力機能を実装すればよいことになる。それは応用技ということで話をXmlTextReaderクラスに戻そう。
XmlTextReaderクラスには、XML文書に記録されているさまざまな項目、要素や属性などを読み込むメソッドが用意されている。しかし、それだけで十分というわけではなく、種類を問わず次の項目を読み込むReadメソッドが存在している。Readメソッドで次の項目を読み込んでから、その項目が何かを判定して、処理すべき内容を決定するプログラミングを行うことが多い。
さて、いろいろな種類の項目が読み込まれて分類される様子を確認するために、サンプル・プログラムを用意した。条件を変えて何度も繰り返し試すために、以下に示すようなGUIのインターフェイスを用意しよう。
まず、Windowsアプリケーションのフォーム上に、マルチラインのTextBoxコントロール(MultilineプロパティをTrueに設定)を2つと、Buttonコントロールを1つ貼り付けよう。Labelコントロールなどは好みに応じて適当に付ければよい。各コントロールには次のような名前を設定する。
上のTextBoxコントロール:textBoxSource
下のTextBoxコントロール:textBoxResult
Buttonコントロール:buttonDump
Visual Studio .NETでの配置は、次のような感じである。
GUIインターフェイスのデザイン例 |
このサンプル・プログラムは、さまざまなXML文書を読み込んで、その処理結果を確認するのに利用する。 |
フォームができたら、コードの先頭部分に、以下のようにImportsステートメント(C#ではusingディレクティブ)を追加する。
|
|
VB.NET版のサンプルに必要なImportsステートメント | |
C#版のサンプルに必要なusingディレクティブ |
そして、いま配置したButtonコントロールをダブルクリックし、ボタンのClickイベントとして以下のようなコード書き込む。
|
|
ボタンのClickイベントに記述するコード(VB.NET版) | |
ボタンのClickイベントに記述するコード(C#版) |
INDEX | ||
.NETで簡単XML | ||
第3回 XML文書を読み書きするプログラムの作成 | ||
1.XML文書を読み込む | ||
2.XML文書を読み込むサンプル・プログラム | ||
3.文書の妥当性を検証するXmlValidatingReaderクラス | ||
4.XML文書を読み書きするサンプル | ||
5.XML文書を読み書きするサンプルの解説 | ||
「連載 :.NETで簡単XML」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|