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

Extracción de información de un mensaje utilizando XPath 1.0 y un nodo JavaCompute

XPath es un lenguaje de consulta diseñado para utilizarse con documentos XML, pero puede utilizarlo con cualquier estructura de árbol para realizar consultas de contenido.

WebSphere Message Broker utiliza XPath para seleccionar elementos del árbol lógico de mensaje independientemente del formato de la corriente de bits. La terminología utilizada en este tema se basa en la terminología utilizada en la definición de W3C de XPath 1.0. Para obtener más información sobre XPath, consulte Utilización de XPath; y para obtener más información sobre la definición W3C del estándar XPath 1.0, consulte Especificación W3C XPath 1.0. Para ver ejemplos del uso de XPath, consulte el tema sobre MbXPath en la documentación de API del nodo definido por el usuario Java.

Este tema contiene la información siguiente:

Utilización del método evaluateXPath para extraer información de mensajes

El método evaluateXPath() se incluye en la API de nodo Java definida por el usuario. Da soporte a XPath 1.0, con las siguientes excepciones:
  • El eje de espacio de nombres y el tipo de nodo de espacio de nombres. El eje de espacio de nombres devuelve los nodos de declaración de espacio de nombres XML reales para un elemento determinado. Esto le permite manipular el prefijo de XML o las declaraciones de URI en una expresión XPath. Este eje devuelve un conjunto de nodos vacío para las corrientes de bits que no son XML.
  • Si utiliza la función id(), se genera MbRecoverableException.

El método evaluateXPath() se puede llamar en un objeto MbMessage (para vías de acceso absolutas) o en un objeto MbElement (para vías de acceso relativas). La expresión XPath se pasa el método como un parámetro de serie de caracteres. Se proporciona una segunda forma de este método que toma un objeto MbXPath. Este objeto encapsula una expresión XPath junto con enlaces de variable y correlaciones de espacio de nombres, si son necesarios.

El método evaluateXPath() devuelve un objeto de uno de estos cuatro tipos, en función del tipo de retorno de expresión:
  • java.lang.Boolean, que representa el tipo booleano de XPath
  • java.lang.Double, que representa el tipo de número de XPath
  • java.lang.String, que representa el tipo de serie de caracteres de XPath
  • java.util.List, que representa el conjunto de nodos de XPath. La interfaz de lista representa una secuencia ordenada de objetos, en este caso MbElements. Permite el acceso directo a los elementos o la posibilidad de obtener un repetidor o una matriz de MbElement.

Enlace de variable de XPath

XPath 1.0 da soporte a la capacidad de hacer referencia a variables que se han asignado antes de que se evalúe la expresión que las contiene. La clase MbXPath tiene tres métodos para asignar y eliminar estos enlaces de variable del código Java de usuario. El valor debe ser uno de los cuatro tipos soportados de XPath 1.0:
  • booleano
  • conjunto de nodos
  • número
  • serie de caracteres

Soporte de espacio de nombres de XPath

Para los mensajes XML, se hace referencia a los espacios de nombres utilizando una correlación desde un prefijo de espacio de nombres abreviado al URI de espacio de nombres completo, como se muestra en el siguiente ejemplo de XML:
<ns1:aaa xmlns:ns1='http://midominio.com/espacionombres1'
         xmlns:ns2='http://midominio.com/espacionombres2'>
  <ns2:aaa>
    <ns1:bbb/>
  </ns2:aaa>
</ns1:aaa>

El prefijo de espacio de nombres es conveniente para representar el espacio de nombres, pero sólo es significativo en el documento que define dicha correlación. El URI de espacio de nombres define el significado global. Asimismo, el concepto de prefijo de espacio de nombres no es significativo para documentos que se generan en un flujo de mensajes, porque se puede asignar un URI de espacio de nombres a un elemento de sintaxis sin que se haya definido una correlación XMLNS.

Por esta razón, los analizadores XMLNSC y MRM sólo exponen el URI de espacio de nombres al intermediario y al código de usuario (ESQL o código de usuario). Utilizando ESQL, puede configurar sus propias correlaciones para crear abreviaturas para estas URI potencialmente largas. Estas correlaciones no están relacionadas de ninguna forma con los prefijos que se definen en el documento XML (aunque pueden tener el mismo nombre).

Con el procesador XPath puede correlacionar abreviaturas de espacios de nombres en los URI que se expanden durante la evaluación. La clase MbXPath contiene métodos para asignar y eliminar estas correlaciones de espacio de nombres. Por ejemplo:
MbXPath xp = new MbXPath("/aaa/other:aaa/bbb");
xp.addNamespacePrefix("other", "http://mydomain.com/namespace2");
xp.setDefaultNamespace("http://mydomain.com/namespace2");
List nodeset = (List)message.evaluateXPath(xp); 

Actualización de un mensaje utilizando extensiones XPath

La implementación de XPath de WebSphere Message Broker proporciona las siguientes funciones adicionales para modificar el árbol de mensaje:
set-local-name(objeto)
Establece la parte local del nombre expandido del nodo de contexto en el valor especificado en el argumento. objeto puede ser cualquier expresión válida y se convierte en una serie de caracteres como si se utilizara una llamada a la función de serie de caracteres.
set-namespace-uri(objeto)
Establece la parte de URI de espacio de nombres del nombre expandido del nodo de contexto en el valor especificado en el argumento. objeto puede ser cualquier expresión válida y se convierte en una serie de caracteres como si se utilizara una llamada a la función de serie de caracteres.
set-value(objeto)
Esta función establece el valor de serie de caracteres del nodo de contexto en el valor especificado en el argumento. objeto puede ser cualquier expresión válida y se convierte en una serie de caracteres como si se utilizara una llamada a la función de serie de caracteres.
Para permitir que los árboles de elementos de sintaxis se cree y se modifiquen, está disponible el eje siguiente además de los 13 que están definidos en la especificación de XPath 1.0:
select-or-create::nombre or ?nombre
?nombre es equivalente a select-or-create::nombre. Si nombre es @name, se crea o se selecciona un atributo. Esto selecciona nodos hijo que coinciden con el nombre especificado o crea nodos nuevos de acuerdo con las normas siguientes:
  • ?nombre seleccione hijos denominados nombre si existen. Si no hay ningún hijo denominado nombre, ?nombre lo crea como el último hijo y, a continuación, lo selecciona.
  • ?$nombre crea nombre como el último hijo y, a continuación, lo selecciona.
  • ?^nombre crea nombre como el primer hijo y, a continuación, lo selecciona.
  • ?>nombre crea nombre como el hermano siguiente y, a continuación, lo selecciona.
  • ?<nombre crea nombre como el hermano anterior y, a continuación, lo selecciona.
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 conceptoTema de concepto | Versión 8.0.0.5 | ac30390_