Acceder a elementos de un árbol de mensaje desde un nodo JavaCompute

Cuando desee acceder al contenido de un mensaje para leer o escribir, utilice la estructura y la disposición de los elementos del árbol que el analizador crea a partir de la corriente de bits de entrada. Siga las relaciones pertinentes de padres e hijos desde la parte superior del árbol hacia abajo, hasta que llegue al elemento que necesite.

El árbol de mensaje se pasa a un nodo JavaCompute como argumento del método de evaluación. El argumento es un objeto MbMessageAssembly. MbMessageAssembly contiene cuatro objetos de mensaje:
  • Mensaje
  • Entorno local
  • Entorno global
  • Lista de excepciones
Estos objetos son sólo de lectura, excepto el Entorno global. Si intenta grabar en los objetos de sólo lectura, se genera MbReadOnlyException.
Este tema contiene la información siguiente sobre cómo acceder a elementos de un árbol de mensaje:

Atravesar el árbol de elementos

Esta tabla muestra los métodos Java que se pueden utilizar para acceder a los árboles de elementos y el nombre de correlación ESQL equivalente para cada punto del árbol.
Accesor Java desde MbMessageAssembly Nombre de correlación ESQL
getMessage().getRootElement() InputRoot
getMessage().getRootElement().getLastChild() InputBody
getLocalEnvironment().getRootElement() InputLocalEnvironment
getGlobalEnvironment().getRootElement() Environment
getExceptionList().getRootElement() InputExceptionList
Se pueden utilizar los métodos siguientes para atravesar un árbol de mensaje desde un elemento de tipo MbElement:
getParent()
devuelve el padre del elemento actual
getPreviousSibling()
devuelve el igual anterior del elemento actual
getNextSibling()
devuelve el igual siguiente del elemento actual
getFirstChild()
devuelve el primer hijo del elemento actual
getLastChild()
devuelve el último hijo del elemento actual

El ejemplo siguiente muestra un mensaje XML simple y el árbol lógico que se creará a partir del mensaje. En este ejemplo el mensaje se ha enviado utilizando WebSphere MQ. El diagrama de árbol lógico también muestra los métodos de llamada para navegar por el árbol.

<document>
  <chapter title='Introducción'>
    Texto.
  </chapter>
</document>

Este diagrama muestra los métodos que puede invocar para navegar por un árbol de mensaje. El árbol que se utiliza aquí es el que se crea al analizar el ejemplo de XML proporcionado en este tema. Desde la parte Root (raíz) del árbol, al llamar a getFirstChild() se navega a Properties (propiedades). Asimismo desde Root, la llamada a getLastChild() devuelve XML. Desde Properties, la llamada a getParent() devuelve Root y la llamada a getNextSibling() devuelve MQMD. Desde MQMD, la llamada a getPreviousSibling() devuelve Properties, la llamada a getParent() devuelve Root y la llamada agetNextSibling() devuelve XML. Desde XML, la llamada a getPreviousSibling() devuelve MQMD, la llamada a getParent() devuelve Root, la llamada a getFirstChild() devuelve 'document' (documento) y la llamada a getLastChild() también devuelve 'document'. Desde 'document', la llamada a getParent() devuelve XML, la llamada a getFirstChild() devuelve 'chapter' (capítulo) y la llamada a getLastChild() también devuelve 'chapter'. Desde 'chapter', la llamada a getParent() devuelve 'document', la llamada a getFirstChild() devuelve 'title' (título) y la llamada a getLastChild() devuelve el hijo que contiene los datos del mensaje "Texto.".

El siguiente código Java accede al elemento 'chapter' del árbol lógico:
MbElement root = assembly.getMessage().getRootElement();
MbElement chapter = root.getLastChild().getFirstChild().getFirstChild();

Acceder a información sobre un elemento utilizando un nodo JavaCompute

Utilice los métodos siguientes para devolver información sobre el elemento de referencia. La API de nodo Java definida por el usuario proporciona detalles adicionales sobre estos métodos:
getName()
Devuelve el nombre de elemento como java.lang.String
getValue()
Devuelve el valor de elemento
getType()
Devuelve el tipo genérico, que es uno de los siguientes:
  • NAME. Un elemento de este tipo tiene un nombre, pero no tiene valor.
  • VALUE. Un elemento de este tipo tiene un valor, pero no tiene nombre.
  • NAME/VALUE. Un elemento de este tipo tiene un valor y un nombre.
getSpecificType()
Devuelve el tipo específico de analizador del elemento
getNamespace()
Devuelve el URI de espacio de nombres de este elemento
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ac30330_