このトピックは、正しく機能するようにメッセージ処理ノードを作成する方法を説明します。 メッセージ処理ノードを使用してメッセージをナビゲートする方法についても説明します。
他のエレメントへの接続がある構文エレメント
構文エレメント・ツリー
エレメント 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 です。
典型的なメッセージでの構文エレメントの最初の生成
最初の生成におけるこれらのエレメントは、しばしば「フォルダー」と呼ばれ、 この中にメッセージ・ヘッダーおよびメッセージ内容のデータを表す構文エレメントが保管されています。 この例では、ルートの最初の子はプロパティー・フォルダーです。 プロパティー の次の兄弟が WebSphere MQ 着信メッセージの MQMD のフォルダーです。その次の 兄弟が MQRFH2 ヘッダーのフォルダーです。最後に、(この例では) XML メッセージであるメッセージ内容を表す フォルダーがあります。
上の図には MQMD および MQRFH2 ヘッダーが含まれています。 MQmessage 処理ノードによって受信されるすべてのメッセージには 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 または getElementType を使用してそのタイプ (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) があります。すでに説明された関数を使用してこれらにナビゲートしこれらの値にアクセスできます。
他の関数が、エレメント・ツリー (またはその一部) をコピーするために使用可能です。 そのコピーにエレメントを追加または除去したり、エレメントの名前や値を変更したりして出力メッセージを 作成できます。