See information about the latest product version
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.
- Message
- Local Environment
- Global Environment
- Exception List
Alternatively, use JAXB Java™ objects with getter and setter methods; see Using JAXB with a JavaCompute node.
Traversing the element tree
Java accessor from MbMessageAssembly | ESQL field type constant |
---|---|
getMessage().getRootElement() | InputRoot |
getMessage().getRootElement().getLastChild() | InputBody |
getLocalEnvironment().getRootElement() | InputLocalEnvironment |
getGlobalEnvironment().getRootElement() | Environment |
getExceptionList().getRootElement() | InputExceptionList |
- 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
Alternatively, use a Document Object Model (DOM) object, and use the DOM API to navigate and manipulate the elements.
- getDOMDocument()
- obtains a W3C org.w3c.dom.Document object for the message body.
- createDOMDocument()
- obtains a W3C org.w3c.dom.Document object for the message body.
- getDOMNode()
- obtains a W3C org.w3c.dom.Node object for the message 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>
- 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.".
MbElement root = assembly.getMessage().getRootElement();
MbElement chapter = root.getLastChild().getFirstChild().getFirstChild();
Accessing information about an 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