iPEXコラム:【基礎】iPEXクラスの利用 [Part_03]
この文書では、iPEXクラスを利用するための基礎を解説します。解説にはWindows版C++用ライブラリ形式のiPEXを用います。
DOMオブジェクトの作成
次にXMLで表現した書籍リストのデータを格納するDOMツリーを作成し、その内容をXML文書として標準出力にダンプするアプリケーションxmlgenerator.exeのコードを示します。
int main(int argc, char* argv[]) // ドキュメントツリーの作成 // 出力ストリームのオープン |
このプログラムは関数makedom()にてドキュメントツリーを作成します。
次にmakedom()にて用いる基本的な処理について、順に解説していきます。
Documentクラスの作成
| Document* pDoc = IPEXDocument::createDocumentObject(); |
ドキュメントノードは、1つのXMLインスタンスを表します。ドキュメントノードは、最大で1つのエレメントノードを子ノードとして持ちます。このエレメントノードをドキュメントエレメントノードと呼びます。
Elementクラスの作成
| Element* createAndAddElement(Document* pDoc, Node* pNode, const
char* tagName) { if (0 == pNode) return 0; try { |
エレメントノードとは、1つのエレメント要素を表し、エレメントとはXML文書内でタグで囲まれた部分です。エレメントノードは、任意の数の、エレメントノード、テキストノード、などを子ノードにすることができます。CreateAndAddElement関数は、指定したノードの子要素として1つのエレメントを作成します。作成された子要素には、値は含まれておりません。この要素はXML文書における、内容が空のタグに相当します。
この要素に内容をもたせるには、テキストノードや子要素などを追加する処理を行う必要があります。
テキストデータを持つElementクラスの作成
| Element* createAndAddTextElement(Document* pDoc, Node* pNode, const char* tagName, const char* text) { if (0 == pNode) return 0; try { |
この関数は、指定したノードの子要素として1つのエレメントを作成します。関数CreateAndAddElement()との違いは、作成するエレメントに文字列を指定して、1つのテキストノードを作成し、追加することです。XML文書では文字列データを持ち、下位にタグを含まない要素に相当します。ただし、この関数で作成したエレメントに、後から子エレメントを追加することもできます。
xmldump.exeの実行
属性値の追加は、次のようにElement::setAttribute()メソッドを用いて行います。
| book->setAttribute(WSTR("binding"), WSTR("hard cover")); |
このようにエレメントクラスのインスタンスbookに属性をセットすることは、XML文書において、<book binding="hard cover"/>タグを生成することに相当します。
xmlgenerator.exeの実行
xmlgenerator.exeはコマンドプロンプトにて次のコマンドを用いることにより、XMLファイルbooklist1.xmlを生成します。
| C:\> xmlgenerator booklist1.xml |
© 2001 Infoteria Corporation












