XML コンポーネントを使用してアプリケーションを構築する
この例では、XMLDocument コンポーネントを使って XML ファイルの内容を表示する VCL フォーム アプリケーションを作成します。
主な手順は次のとおりです。
- XML ドキュメントを作成する。
- VCL フォームを作成する。
- XMLDocument コンポーネントをフォームに配置し、XML ファイルと関連付ける。
- XML ファイルの内容を表示するための VCL コンポーネントを作成する。
- XML 子ノードの内容を表示するためのイベント ハンドラを記述する。
- アプリケーションをコンパイルして実行する。
XML ドキュメントを作成するには:
- テキスト エディタで、次のテキストをファイルにコピーします。
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <!DOCTYPE StockHoldings [ <!ELEMENT StockHoldings (Stock+)> <!ELEMENT Stock (name)> <!ELEMENT Stock (price)> <!ELEMENT Stock (symbol)> <!ELEMENT Stock (shares)> ]> <StockHoldings> <Stock exchange="NASDAQ"> <name>MyAppDevCo</name> <price>10.375</price> <symbol>MADCO</symbol> <shares>100</shares> </Stock> <Stock exchange="NYSE"> <name>MyCompany</name> <price>8.75</price> <symbol>MYCO</symbol> <shares type="preferred">25</shares> </Stock> </StockHoldings>
- ファイルを XML ドキュメントとしてローカル ドライブに保存します。ファイルには stock.xml などの名前を付けます。
- ブラウザでドキュメントを開きます。内容がエラーなく表示されるはずです。
メモ: ブラウザで [表示|ソース]などを選択すると、ソース ファイルがテキスト エディタに表示されます。
XMLDocument コンポーネントを持つフォームを作成するには:
- [ファイル|新規作成|その他...]の[Delphi プロジェクト]または[C++Builder プロジェクト]を選択し、[VCL フォーム アプリケーション]アイコンをダブルクリックします。VCL フォーム デザイナが表示されます。
- [ツール パレット]の[Internet]ページから、[TXMLDocument]コンポーネントをフォームに配置します。
- [オブジェクト インスペクタ]で、FileName プロパティの隣にある省略記号([...])ボタンをクリックし、作成した XML ファイルの場所を参照してファイルを開きます。これで XML ファイルが TXMLDocument コンポーネントと関連付けられます。
- [オブジェクト インスペクタ]で Active プロパティを True に設定します。
VCL コンポーネントをセットアップするには:
- [ツール パレット]の[Standard]ページから、[TMemo]コンポーネントをフォームに配置します。
- [ツール パレット]の[Standard]ページから、[TButton]コンポーネントを 2 つ、フォームの Memo1 のすぐ上に配置します。
- Button1 を選択し、[オブジェクト インスペクタ]で Caption プロパティに「MyAppDevCo」と入力します。
- Button2 を選択し、[オブジェクト インスペクタ]で Caption プロパティに「MyCompany」と入力します。
XML ファイルの子ノードの内容を表示するには:
- Button1 を選択し、[オブジェクト インスペクタ]で[イベント]タブの OnClick イベントをダブルクリックします。[コード]が開き、TForm1.Button1Click イベント ハンドラ ブロックにカーソルが置かれます。
- 以下のコードを入力します。このコードでは、[MyAppDevCo]ボタンがクリックされたときに最初の子ノードの株価を表示します。
MyAppDevCoStock:=XMLDocument1.DocumentElement.ChildNodes[0]; Price:= MyAppDevCoStock.ChildNodes['price'].Text; Memo1.Text := Price;
- C++ の場合は以下のとおりです。
IXMLNode *MyAppDevCoStock = XMLDocument1->DocumentElement-> ChildNodes->GetNode(0); WideString Price = MyAppDevCoStock->ChildNodes-> FindNode( "price" )->Text; Memo1->Text = Price;
- Delphi の場合、イベント ハンドラのコード ブロックのすぐ上に var セクションを追加し、以下のローカル変数宣言を入力します。 var MyAppDevCoStock: IXMLNode; Price: string;
- Button2 を選択し、[オブジェクト インスペクタ]で[イベント]タブの OnClick イベントをダブルクリックします。[コード]が開き、TForm1.Button2Click イベント ハンドラ ブロックにカーソルが置かれます。
- 以下のコードを入力します。このコードでは、[MyCompany]ボタンがクリックされたときに 2 番目の子ノードの株価を表示します。
- C++ の場合は以下のとおりです。
- Delphi の場合、イベント ハンドラのコード ブロックのすぐ上に var セクションを追加し、以下のローカル変数宣言を入力します。
MyCompany:=XMLDocument1.DocumentElement.ChildNodes[1]; Price:= MyCompany.ChildNodes['price'].Text; Memo1.Text := Price;
IXMLNode *MyCompany = XMLDocument1->DocumentElement ->ChildNodes->GetNode(1); WideString Price = MyAppDevCoStock->ChildNodes ->FindNode( "price" )->Text; Memo1->Text = Price;
var MyCompany: IXMLNode; Price: string;
アプリケーションをコンパイルして実行するには:
- [実行|実行] を選択して、アプリケーションをコンパイルし実行します。アプリケーション フォームに 2 つのボタンと 1 つのメモが表示されます。
- [MyAppDevCo]ボタンをクリックします。株価が表示されます。
- [MyCompany]ボタンをクリックします。株価が表示されます。