以下の表は、エレメント・ツリーへのアクセスに使用できる Java メソッド、およびツリー内の各ポイントに対する同等の ESQL フィールド・タイプ定数を示しています。
MbMessageAssembly からの Java アクセサー |
ESQL フィールド・タイプ定数 |
getMessage().getRootElement() |
InputRoot |
getMessage().getRootElement().getLastChild() |
InputBody |
getLocalEnvironment().getRootElement() |
InputLocalEnvironment |
getGlobalEnvironment().getRootElement() |
Environment |
getExceptionList().getRootElement() |
InputExceptionList |
以下のメソッドを使用して、タイプ MbElement のエレメントからメッセージ・ツリーを全探索します。
- getParent()
- 現行エレメントの親を戻します。
- getPreviousSibling()
- 現行エレメントの直前の兄弟を戻します。
- getNextSibling()
- 現行エレメントの次の兄弟を戻します。
- getFirstChild()
- 現行エレメントの最初の子を戻します。
- getLastChild()
- 現行エレメントの最後の子を戻します。
あるいは、Document Object Model (DOM) オブジェクトを使用し、DOM API によってエレメントにナビゲートして操作します。
MBMessage には、以下のメソッドが用意されています。
- getDOMDocument()
- メッセージ本体の W3C org.w3c.dom.Document オブジェクトを取得します。
- createDOMDocument()
- メッセージ本体の W3C org.w3c.dom.Document オブジェクトを取得します。
MbElement には、以下のメソッドが用意されています。
- getDOMNode()
- メッセージ・エレメントの W3C org.w3c.dom.Node オブジェクトを取得します。
以下の例は、簡単な XML メッセージ、およびそのメッセージから作成される論理ツリーを示しています。 メッセージが WebSphere® MQ を使用して送信されています。 論理ツリー図は、ツリー内をナビゲートするために呼び出されるメソッドも示しています。
<document>
<chapter title='Introduction'>
Some text
</chapter>
</document>

この図で使用されるツリーは、前の例の XML を構文解析して作成されたものです。
- ツリーのルート部分から getFirstChild() を呼び出すと、「プロパティー」までナビゲートします。 同じくルートから、getLastChild() を呼び出すと XML が戻されます。
- 「プロパティー」から getParent() を呼び出すとルートが戻され、
getNextSibling() を呼び出すと MQMD が戻されます。
- MQMD から getPreviousSibling() を呼び出すと「プロパティー」が戻され、
getParent() を呼び出すとルートが戻され、
getNextSibling() を呼び出すと XML が戻されます。
- XML から getPreviousSibling() を呼び出すと MQMD が戻され、
getParent() を呼び出すとルートが戻され、
getFirstChild() を呼び出すと文書が戻され、
getLastChild() を呼び出すと同様に文書が戻されます。
- 文書から getParent() を呼び出すと XML が戻され、
getFirstChild() を呼び出すと章が戻され、
getLastChild() を呼び出すと同様に章が戻されます。
- 章から getParent() を呼び出すと文書が戻され、
getFirstChild() を呼び出すとタイトルが戻され、
getLastChild() を呼び出すとメッセージ・データ "Some text." を含む子が戻されます。
以下の Java コードは、空白が含まれない XML メッセージ用の論理ツリー内の章エレメントにアクセスします。 XML パーサーは解析されたツリーの空白を保存しますが、XMLNS パーサーと XMLNSC パーサーは保存しません。
MbElement root = assembly.getMessage().getRootElement();
MbElement chapter = root.getLastChild().getFirstChild().getFirstChild();