WebSphere Message Broker, Versión 8.0.0.5 Sistemas operativos: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte la información sobre la última versión del producto en IBM Integration Bus, Versión 9.0

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.

De forma alternativa, utilice objetos Java™ de JAXB con los métodos de obtención (get) y establecimiento (set); consulte Utilizar JAXB con un nodo JavaCompute.

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.
Descriptor de acceso Java de 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

De forma alternativa, utilice un objeto DOM (Modelo de objetos de documento) y utilice la API DOM para navegar y manipular los elementos.

MBMessage proporciona los métodos siguientes:
getDOMDocument()
obtiene un objeto W3C org.w3c.dom.Document para el cuerpo del mensaje.
createDOMDocument()
obtiene un objeto W3C org.w3c.dom.Document para el cuerpo del mensaje.
MbElement proporciona el método siguiente:
getDOMNode()
obtiene un objeto W3C org.w3c.dom.Node para el elemento de mensaje.

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>

El diagrama muestra los métodos que puede invocar para navegar por un árbol de mensajes y se describe en el texto que lo rodea.

El árbol que se utiliza en este diagrama es el que se ha creado analizando el ejemplo XML anterior.
  • Desde la parte Root (raíz) del árbol, al llamar a getFirstChild() se navega a las 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 de capítulo 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
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Comentarios

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última actualización:
        
        Última actualización: 2015-02-28 16:58:36


Tema de tareaTema de tarea | Versión 8.0.0.5 | ac30330_