WebSphere Message Brokers
File: ac30330_
Writer: Catherine Tucker

Task topic

This build: July 31, 2007 21:20:09

Accessing elements in a message tree from a JavaCompute node

Access the contents of a message, for reading or writing, using the structure and arrangement of the elements in the tree that the parser creates from the input bit stream.

Follow the relevant parent and child relationships from the top of the tree downwards until you reach the required element.

The message tree is passed to a JavaCompute node as an argument of the evaluate method. The argument is an MbMessageAssembly object. MbMessageAssembly contains four message objects:
  • Message
  • Local Environment
  • Global Environment
  • Exception List
These objects are read-only, except for Global Environment. If you try to write to the read-only objects, an MbReadOnlyException is issued.
This topic contains the following information about accessing elements in a message tree:

Traversing the element tree

The following table shows the Java methods that you can use to access element trees, and the equivalent ESQL correlation name for each point in the tree.
Java accessor from MbMessageAssembly ESQL correlation name
getMessage().getRootElement() InputRoot
getMessage().getRootElement().getLastChild() InputBody
getLocalEnvironment().getRootElement() InputLocalEnvironment
getGlobalEnvironment().getRootElement() Environment
getExceptionList().getRootElement() InputExceptionList
Use the following methods to traverse a message tree from an element of type MbElement:
getParent()
returns the parent of the current element
getPreviousSibling()
returns the previous sibling of the current element
getNextSibling()
returns the next sibling of the current element
getFirstChild()
returns the first child of the current element
getLastChild()
returns the last child of the current element

The following example shows a simple XML message and the logical tree that would be created from the message. The message has been sent using WebSphere MQ. The logical tree diagram also shows the methods to call in order to navigate around the tree.

<document>
  <chapter title='Introduction'>
    Some text
  </chapter>
</document>

This diagram shows the methods that you can call to navigate around a message tree. The tree used here is the one created by parsing the XML example given in this topic. From the Root part of the tree calling getFirstChild() navigates to Properties. Also from Root, calling getLastChild() returns XML. From Properties, calling getParent() returns Root, and calling getNextSibling() returns MQMD. From MQMD, calling getPreviousSibling() returns Properties, calling getParent() returns Root, and calling getNextSibling() returns XML. From XML, calling getPreviousSibling() returns MQMD, calling getParent() returns Root, calling getFirstChild() returns document, and calling getLastChild() also returns document. From document, calling getParent() returns XML, calling getFirstChild() returns chapter, and calling getLastChild() also returns chapter. From chapter, calling getParent() returns document, calling getFirstChild() returns title, and calling getLastChild() returns the child that contains the message data "Some text.".

The following Java code accesses the chapter element in the logical tree for an XML message that does not contain white spaces. The XML parser retains white space in the parsed tree, but the XMLNS and XMLNSC parsers do not.
MbElement root = assembly.getMessage().getRootElement();
MbElement chapter = root.getLastChild().getFirstChild().getFirstChild();

Accessing information about an element

Use the following methods to return information about the referenced element:
getName()
returns the element name as a java.lang.String
getValue()
returns the element value
getType()
returns the generic type, which is one of the following types:
  • NAME: an element of this type has a name, but no value.
  • VALUE: an element of this type has a value, but no name.
  • NAME/VALUE: an element of this type has both a value and a name.
getSpecificType()
returns the parser-specific type of the element
getNamespace()
returns the namespace URI of this element
Related reference
JavaCompute node
Notices | Trademarks | Downloads | Library | Support | Feedback

Copyright IBM Corporation 1999, 2007Copyright IBM Corporation 1999, 2007. All Rights Reserved.
This build: July 31, 2007 21:20:09

ac30330_ This topic's URL is: