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

Para 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 evaluate. 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 emite la excepción MbReadOnlyException.
Este tema contiene la información siguiente sobre cómo acceder a elementos de un árbol de mensaje:

Atravesar el árbol de elementos

La tabla siguiente muestra los métodos Java que puede utilizar para acceder a los árboles de elementos y la constante de tipo de campo ESQL equivalente para cada punto del árbol.
Objeto usuario Java desde MbMessageAssembly Constante de tipo de campo ESQL
getMessage().getRootElement() InputRoot
getMessage().getRootElement().getLastChild() InputBody
getLocalEnvironment().getRootElement() InputLocalEnvironment
getGlobalEnvironment().getRootElement() Environment
getExceptionList().getRootElement() InputExceptionList
Utilice los métodos siguientes para recorrer 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. 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 a getNextSibling() 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 para un mensaje XML que no contiene espacios en blanco: El analizador XML retiene los espacios en blanco en el árbol analizado, pero los analizadores XMLNS y XMLNSC no.
MbElement root = assembly.getMessage().getRootElement();
MbElement chapter = root.getLastChild().getFirstChild().getFirstChild();

Acceso a información sobre un elemento

Utilice los métodos siguientes para devolver información sobre el elemento de referencia:
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
Tareas relacionadas
Escribir Java
Referencia relacionada
Nodo JavaCompute
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Última actualización : 2009-02-16 13:54:08

ac30330_