評価してください: |
~ Visual C# による XML チュートリアル ~
2.1 はじめに
第 1 章では、XML の概要について解説しました。XML は、Web 上でデータ交換の標準フォーマットとして欠かせない存在であり、Web アプリケーション開発にとって非常に重要な役割を担っていることが理解できたと思います。実際の Web アプリケーション開発において、XML を利用するには、XML 文書の入出力や操作方法を学ぶ必要があります。Visual C# .NET には、XML 文書を操作するための機能が用意されており、容易に XML 文書を扱うことができます。そこで、第 2 章では、Visual C# .NET による XML 文書の入出力や操作方法を説明します。前半では、Visual C# .NET による XML 文書の入出力や操作について説明し、後半では、.NET Framework の XML 関連機能について説明します。
2.2 Visual C# .NET による XML 文書の入出力
本節では、Visual C# .NET による XML 文書の入出力について説明します。まず、XML 文書の操作に関する概念を解説し、次に、Visual C# .NET による XML 文書の読み込みと保存について説明します。最後に、XML 文書の入出力を行うサンプルプログラムを作成します。
2.2.1 XML パーサ
XML パーサ (XML Parser) とは、XML 文書を構文解析し、アプリケーションから操作可能なオブジェクトへ変換するプログラムです。XML 文書は、複雑な文書構造であるため、XML 文書の内容をすべて把握するプログラムを記述するには手間がかかります。そこで、XML パーサを利用することにより、XML 文書を読み込み、アプリケーションから操作しやすいオブジェクトに変換します。一般的にアプリケーションが XML 文書を扱う場合には、XML パーサを利用します。また、XML パーサは、XML 文書が正しく記述されているかどうかを検証する役割もあります。
本章では、XML パーサとして MSXML パーサを利用します。XML パーサとアプリケーションの関係を図 1 に示します。
2.2.2 XML 文書を操作するAPI
API (Application Programming Interface) とは、既存のライブラリから関数を呼び出すためのインタフェースです。具体的には、XML パーサにより変換された XML 文書のオブジェクトへ対するアクセス方法などが挙げられます。XML 文書を扱う API は、DOM (Document Object Model) 、または SAX (Simple API for XML) が一般的に使用されます。DOM は、W3C によって勧告されている API であり、XML 文書を予めメモリに読み込んで仮想的な階層構造ツリー (DOM ツリー) を作成します。そして、DOM は、階層化された XML 文書の要素や属性に対し直接アクセスします。SAX は、イベント型の API であり、XML 文書の先頭から順に要素などを読み込むたびにイベントを発生させ、対応しているイベントハンドラを実行します。
本章では、XML 文書を処理する API として DOM を利用します。Visual C# .NET は、MSXML ライブラリと呼ばれる DOM を実装した XML パーサの参照が可能です。MSXML ライブラリと Visual C# .NET の関係を図 2 に示します。
どのように異なるポートにtelnetで接続
2.2.3 XML 文書の読み込み
Visual C# .NET では、XML 文書を取り扱う前に 2 つの準備が必要です。まず、XML 名前空間の参照をします。次に、XMLDocument クラスを利用するため、インスタンスを生成します。
XML 名前空間とは、XML 文書を操作するために用意されたクラス群のことです。XML 名前空間の参照は、XML 文書を操作するために必要なクラスの利用を可能にします。XML 名前空間を参照するための構文を次に示します。
XMLDocument クラスは、DOM のインタフェースを実装したクラスであり、XML 文書全体を管理しています。XMLDocument クラスのインスタンスを生成する構文を次に示します。
XmlDocument インスタンス名 = new XmlDocument(); |
XML 文書の読み込みには、XMLDocument クラスの Load メソッドを使用します。Load メソッドの構文を次に示します。
XMLDocument インスタンス名.Load(ファイル名); |
2.2.3 XML 文書の読み込み
Visual C# .NET では、XML 文書を取り扱う前に 2 つの準備が必要です。まず、XML 名前空間の参照をします。次に、XMLDocument クラスを利用するため、インスタンスを生成します。
XML 名前空間とは、XML 文書を操作するために用意されたクラス群のことです。XML 名前空間の参照は、XML 文書を操作するために必要なクラスの利用を可能にします。XML 名前空間を参照するための構文を次に示します。
using System.Xml;
XMLDocument クラスは、DOM のインタフェースを実装したクラスであり、XML 文書全体を管理しています。XMLDocument クラスのインスタンスを生成する構文を次に示します。
XmlDocument インスタンス名 = new XmlDocument();
XML 文書の読み込みには、XMLDocument クラスの Load メソッドを使用します。Load メソッドの構文を次に示します。
XMLDocument インスタンス名.Load(ファイル名);
2.2.4 XML 文書の保存
XML 文書の保存には、XML 文書の読み込みと同様、XML 名前空間と XMLDocument クラスを利用します。XMLDocument クラスを利用するためには、インスタンスを生成します。XMLDocument クラスのインスタンス生成方法は、第 2.2.3 項を参照してください。XML 文書の保存には、XMLDocument クラスの Save メソッドを使用します。Save メソッドの構文を次に示します。
XMLDocument インスタンス名.Save(ファイル名);
2.2.5 サンプルプログラム
本項では、実際に XML 文書を入出力するサンプルプログラムを作成します。本プログラムは、XML ファイルを TextBox コントロールに表示し、SaveFileDialog コントロールより XML ファイルを保存します。まず、新しいプロジェクトを作成します。次に、Visual C# .NET デザインでインタフェースを作成します。サンプルプログラムのインタフェースを図 3 に示します。
次に、XML 名前空間の参照を行います。Form1 のソースコードへ XML 名前空間の参照を追加します。XML 名前空間の参照を図 4 に示します。
グロスで何台?
次に、XMLDocument クラスを利用するため、インスタンスを生成します。 XMLDocument クラスのインスタンス生成のコードを図 5 に示します。
最後に、button1_Click イベントハンドラおよび button2_Click イベントハンドラへコードを記述します。Form1 に作成した button1 コントロール、button2 コントロールそれぞれをダブルクリックし、コードを追加します。ボタンの作成のプログラムを図 6 に示します。
以上でサンプルプログラムの完成です。サンプルプログラムの実行結果を図 7 に示します。
2.3 Visual C# .NET による XML 文書の操作
本節では、Visual C# .NET による XML 文書の操作について解説します。第 3 章では、簡易 XML エディタを作成するため、本節の知識が必要不可欠です。 まず、DOM ツリーについて解説し、次に、ノードについて解説します。
2.3.1 DOM ツリー
DOM ツリーとは、DOM がメモリ上に作成したXML 文書全体の階層構造です。DOM ツリーに付加された要素や属性などは、全てノードとして扱われます。ノードは、12 種類のノードタイプに分類されており、各ノードタイプには、使用できるメンバ (メソッドとプロパティ) が定義されています。本節では、主要なノードである、ルートノード、要素ノード、属性ノード、テキストノードについて解説します。DOM ツリーのイメージを図 8 に示します。
2.3.2 ノードの参照
ノードを参照するには、XMLNode クラスのプロパティを利用します。ノードの参照に使用する主要なプロパティを表 1 に示します。
表 1 ノードの参照に使用する主要なプロパティ
プロパティ名 | 説明 |
DocumentElement | ルートノードを参照します |
ParentNode | ノードの親ノードを参照します |
ChildNodes | ノードの全ての子ノードを参照します |
FirstChild | ノードの先頭の子ノードを参照します |
LastChild | ノードの最後の子ノードを参照します |
Attributes | ノードの属性を参照します |
ルートノードとは、DOM ツリーの最上位のノードのことです。DOM により、XML 文書を操作する場合は、最初にルートノードを作成または参照する必要があります。作成したXML 文書のルートノードを参照する構文を次に示します。
XmlNode ルートノード名 = XMLDocumentインスタンス名.DocumentElement;
ノードを参照するには、プロパティを組み合わせて使用します。ノード名 「root」 の先鍊の子ノードの属性を参照するコードを次に示します。
root.FirstChild.Attributes
ノードを参照するには、プロパティを組み合わせて使用します。ノード名 「root」 の先頭の子ノードの属性を参照するコードを次に示します。
何歳あなたは、スマート車を運転するである必要はありません
root.FirstChild.Attributes
2.3.3 要素ノードの作成
要素ノードとは、XML 文書要素内の要素となるノードです。要素ノードを作成するには、CreateElement メソッドを利用します。要素ノードを作成する構文を次に示します。
XmlElement 要素ノード名 = XMLDocumentインスタンス名.CreateElement("要素名");
2.3.4 属性ノードの作成
属性ノードとは、XML 文書要素内の属性となるノードです。属性ノードを作成するには、CreateAttribute メソッドを利用します。属性ノードを作成する構文を次に示します。
XmlAttribute 属性ノード名 = XMLDocumentインスタンス名.CreateAttribute("属性名");
属性ノードには、属性値の指定も可能です。属性ノードに属性値を指定する構文を次に示します。
属性ノード名.Value = "属性値"
2.3.5 テキストノードの作成
テキストノードとは、XML 文書要素内のテキストとなるノードです。テキストノードを作成するには、CreateTextNode メソッドを利用します。テキストノードを作成する構文を次に示します。
XmlCharacterData テキストノード名 = XMLDocumentインスタンス名.CreateTextNode("テキスト");
2.3.6 ノードの操作
DOMでは、XML ファイルに対し、ノードの追加や削除などの操作を行うことができます。ノードを操作するには、XMLNode クラスのメソッドを利用します。ノード操作の構文を次に示します。
ノード.メソッド(ノード名)
ノード操作に使用する主要なメソッドを表 2 に示します。
表 2 ノード操作に使用する主要なメソッド
メソッド名 | 説明 |
PrependChild | ノードを子ノードの先頭に追加します |
AppendChild | ノードを子ノードの末尾に追加します |
InsertBefore | ノードを指定したノードの直前に挿入します |
InsertAfter | ノードを指定したノードの直後に挿入します |
RemoveChild | 指定した子ノードを削除します |
ただし、属性ノードを操作する場合、使用するメソッドが異なります。属性ノード操作に使用する主要なメソッドを表 3 に示します。
表 3 属性ノード操作に使用する主要なメソッド
メソッド名 | 説明 |
Prepend | 属性をノードの属性の先頭に追加します |
Append | 属性をノードの属性の末尾に追加します |
InsertBefore | 属性を指定した属性の直前に挿入します |
InsertAfter | 属性を指定した属性の直後に挿入します |
Remove | 指定した属性を削除します |
Visual C# .NET による XML 文書の操作例を次に示します。
private void button1_Click(object sender, System.EventArgs e) { XmlDocument doc = new XmlDocument(); //インスタンスの生成 openFileDialog1.ShowDialog(); //openFileDialogの表示 doc.Load(openFileDialog1.FileName); //XML文書の読み込み XmlNode root = doc.DocumentElement; //ルートノードの参照 XmlElement elem = doc.CreateElement("要素"); //要素ノードの作成 root.FirstChild.PrependChild(elem); //ルートノードに要素ノードを付加 XmlCharacterData text = doc.CreateTextNode("テキスト"); //テキストノードの作成 //作成した要素ノードにテキストノードを付加 root.FirstChild.FirstChild.PrependChild(text); saveFileDialog1.ShowDialog(); //SaveFileDialogの表示 doc.Save(saveFileDialog1.FileName); //XMLファイルの保存 }
2.4 .NET Framework の XML 関連機能
.NET Framework には、XML に関連する様々な機能が用意されています。本節では、特に、XML 文書の操作に係わる XML 関連機能を紹介します。
2.4.1 XPath
XPath (XML Path Language) は、XML 文書の特定の部分を指し示す構文を記述する言語です。DOM は、XML 文書の特定の部分を参照するためにノードの参照を繰り返し行う必要があります。そのため、DOM では、XML 文書の構造が複雑である場合、ノードの参照が非常に困難です。しかし、XPath では、XML 文書の特定の部分を的確に指し示すことができるため、非常に便利です。MSXML ライブラリでは、XPath に対応しており、XPath を利用したクラスが用意されています。例えば、XMLDocument クラスの SelectNodes メソッドでは、XPath を用いて DOM ツリー内のノードを参照できます。
2.4.2 XmlReader・XmlWriter クラス
XMLReadterとは、DOM を生成することなく XML 文書を読み込む機能です。また、XMLWriter とは、DOM を生成することなく XML 文書をファイルに出力する機能です。
これら XmlReader・XmlWriter の主な特徴としては、XML 文書が正しく記述されているかどうかのチェックを行えることやDOM使用時と比べメモリ消費が少ないこと、基本的な API は SAX インタフェースを利用していることが挙げられます。
.NET Framework では、XmlReader クラス、XmlWriter クラスを実装しており、これらのクラスを利用することにより、XML 文書へシーケンシャルにアクセスすることが可能となります。
2.5 まとめ
本章では、Visual C# .NET による XML 文書の入出力および XML 文書の操作方法について説明しました。本章で述べたとおり、XML 文書の操作の理解が、Web アプリケーション開発への第一歩となっています。また、Visual C# .NET は、私達に Web アプリケーション開発の大きな手助けとして、XML に関連した様々な機能を提供しています。これらの機能を使いこなし、組み合わせることにより多様な Web アプリケーション開発が可能です。次回は、簡易 XML エディタの開発について解説します。
ページのトップへ
0 件のコメント:
コメントを投稿