メッセージ処理ノードまたは出力ノードの書き方、およびノード内部でメッセージをナビゲートする方法を計画します。
他の関数およびメソッドがエレメント自体の操作をサポートします。 これには、エレメントを作成したり、エレメントの値を設定また照会したり、ツリーに新しいエレメントを挿入したり ツリーからエレメントを除去したりする関数やメソッドが含まれます。 詳細については、C ノード・ユーティリティー関数およびC パーサー・ユーティリティー関数、 または Javadoc 情報を参照してください。
エレメント A がツリーのルート・エレメント です。 これがルートであるため、これには親がありません。エレメント A はエレメント B を 最初の子として持っています。A には他の子がないため、 エレメント B が A の最後の子でもあります。
エレメント B は 3 つの子: エレメント C、D、 および E があります。 エレメント C が B の最初の子、 エレメント E が B の最後の子です。
エレメント C には 2 つの兄弟: エレメント D および E があります。エレメント C の次の兄弟は エレメント D です。エレメント D の次の兄弟は エレメント E です。エレメント E の直前の兄弟は エレメント D です。エレメント D の直前の兄弟は エレメント C です。
最初の生成におけるこれらのエレメントは、しばしばフォルダーと呼ばれ、 この中にメッセージ・ヘッダーおよびメッセージ内容のデータを表す構文エレメントが保管されています。 この例では、ルートの最初の子はプロパティー・フォルダーです。 プロパティーの次の兄弟が、MQMD ヘッダーのフォルダーです。 その次の 兄弟が MQRFH2 ヘッダーのフォルダーです。最後のフォルダーはメッセージ内容 (この例では XML メッセージとなっている) を表します。
上の図には MQMD および MQRFH2 ヘッダーが含まれています。WebSphere MQ を扱う処理ノードで受信されるメッセージにはすべて MQMD ヘッダーが組み込まれます。これに組み込めるヘッダーは他にも多数あります。
<Business>
<Product type='messaging'></Product>
<Company>
<Title>IBM</Title>
<Location>Hursley</Location>
<Department>WebSphere MQ</Department>
</Company>
</Business>
メッセージをナビゲートするには、提供されているノード・ユーティリティー関数およびメソッド (または類似のパーサー・ユーティリティー関数) を使用してください。上記の XML メッセージを使用して、まず cniRootElement を、ノードがこの関数への入力として受信したメッセージと共に呼び出さなければなりません。Java™ では、着信の MbMessage オブジェクトに getRootElement を呼び出す必要があります。 この呼び出しは、エレメントのルートを表す MbElement を戻します。ユーザー定義ノードのこのルート・エレメントには変更を加えないでください。
ブローカーが受信する標準的なメッセージの構文エレメントが最初に生成される様子を示す図は、ルート・エレメントの最後の子が XML 構文解析ツリーを含むフォルダーであることを示しています。このフォルダーにナビゲートするには、C ノードで cniLastChild (この直前のコールの出力をこの関数の入力として) を呼び出すか、あるいは Java ノード内でメソッド getLastChild をルート・エレメントに対して呼び出します。
メッセージの最上位には、1 つだけエレメント (<Business>) があるので、cniFirstChild (Cで) または getFirstChild (Java で) を呼び出すとツリーのこの点に移動します。 cniElementType または getType を使用してそのタイプ (name) を入手し、その後に cniElementName または getName と続けて名前自体 (Business) を戻してください。
エレメント <Business> には 2 つの子、<Product> および <Company> があります。cniFirstChild または getFirstChild の後 cniNextSibling または getNextSibling を続けて使用して、それぞれの子へ順にナビゲートしてください。
エレメント <Product> には属性 (type='messaging') があり、これは子エレメントです。このエレメントへナビゲートするには cniFirstChild または getFirstChild を使用し、cniElementType または getType を使用してそのタイプ (name-value) を戻します。名前を得るには、cniElementName または getName を使用します。値を入手するには、cniElementValueType を呼び出してタイプを戻し、それに cniElementValue グループの中の適切な関数を続けます。この例では、 cniElementCharacterValue です。Java では、メソッド getValue を使用するとこれにより、そのエレメント値を表す Java オブジェクトが戻されます。
エレメント <Company> には 3 つの子があり、それぞれに値エレメントである子 (IBM、Hursley、および WebSphere MQ) があります。すでに説明された関数を使用してこれらにナビゲートしこれらの値にアクセスしてください。
他の関数が、エレメント・ツリー (またはその一部) をコピーするために使用可能です。 そのコピーにエレメントを追加または除去したり、エレメントの名前や値を変更したりして出力メッセージを 作成できます。 詳細については、C ノード・ユーティリティー関数およびC パーサー・ユーティリティー関数、 または Java ユーザー定義ノード API を参照してください。