Altova MapForce 2023 Enterprise Edition

Ejemplo: excepción cuando un nodo no existe

Inicio Anterior Inicio Siguiente

En este ejemplo podemos ver una asignación de datos que emite una excepción cuando no existe un nodo concreto en el esquema XML de origen. Para simplificar el ejemplo, la asignación usa el mismo esquema XML en el componente de origen y de destino.

Para añadir el esquema de origen a la asignación:

1.En el menú Insertar haga clic en Archivo o esquema XML... y navegue hasta el archivo <Documentos>\Altova\MapForce2023\MapForceExamples\BookList.xsd.

2.Cuando la aplicación solicite un archivo de instancia, haga clic en Omitir.

3.Cuando la aplicación solicite un elemento raíz, seleccione el elemento raíz BookList.

 

Para añadir el esquema de destino siga los mismos pasos. Después, con los comandos correspondientes del menú Insertar (o con los botones correspondientes de la barra de herramientas), añada estos componentes:

 

Un Filtro: nodos/filas (véase Filtros y condiciones)

Una constante con el texto "No se definió el año"

Una excepción

 

Por último, arrastre la función exists del panel Bibliotecas hasta el área de asignación y cree las conexiones que aparecen en esta imagen:

 

mf_exception_example_1

 

Según lo definido en el esquema XML, todos los atributos del elemento Book son opcionales, excepto el título del libro (Title). Por tanto, en una instancia XML válida el atributo Year puede existir o no. El propósito de la asignación es procesar correctamente una instancia XML en la que todos los libros tienen el atributo Year. Si un libro no contiene este atributo, la asignación emitirá una excepción.

Para probar la ejecución de la asignación:

1.Haga doble clic en el título del componente de origen y en el campo Archivo XML de entrada navegue hasta este archivo: <Documentos>\Altova\MapForce2023\MapForceExamples\BookList.xml.

2.Haga clic en el panel Resultados para ejecutar la asignación.

Para probar la excepción:

1.En el mismo directorio cree una copia del archivo BookList.xml llamada BookListInvalid.xml.

2.Edite el archivo BookListInvalid.xml eliminando el atributo Year de algún elemento Book.

3.Haga doble clic en el título del componente de origen y en el campo Archivo XML de entrada navegue hasta el archivo BookListInvalid.xml.

4.Haga clic en el panel Resultados para ejecutar la asignación.

 

Vemos ahora cómo funciona la asignación.

 

Por cada libro de la instancia de origen, la conexión A crea un libro en la instancia de destino.

 

Por cada libro del componente de origen, las conexiones B, C, D y E se encargan de copiar Title, Year, Price y Author en el componente de destino.

 

La conexión F desencadena la función exists, encargada de comprobar si existe o no el atributo "Year". La conexión G pasa al filtro el resultado de la función (true o false). Si el resultado es true, significa que el atributo "Year" existe y el libro se pasa al filtro y, en consecuencia, al destino por medio de la conexión H.

 

Observe que el filtro no está conectado directamente con la salida Year del componente de origen. Si así fuera, el filtro filtraría el año sin más y la excepción no se emitiría.

 

La conexión I existe porque la excepción debe estar conectada con una salida on-false o on-true de un filtro. Y, por último, la conexión K pasa el texto del error desde la constante hasta el componente de excepción.

© 2017-2023 Altova GmbH