Altova MapForce 2025 Professional Edition

Ejemplo: crear jerarquías a partir de archivos CSV y de texto de longitud fija

Inicio Anterior Inicio Siguiente

Este ejemplo está disponible en la siguiente ruta de acceso: <Documentos>\Altova\MapForce2025\MapForceExamples\Tutorial\Tut-headerDetail.mfd. El ejemplo utiliza un archivo CSV (Pedidos.csv) que tiene el siguiente formato:

 

Campo 1: H define un registro de encabezado y D un registro de detalles.

Campo 2: una clave común para los registros de encabezado y de detalles.

Cada registro de encabezado o de detalles está en una línea distinta.

 

A continuación, puede ver el contenido del archivo Orders.csv.

Head-detail-01

El objetivo de esta asignación de datos es:

 

Asignar el archivo CSV plano a un archivo XML jerárquico.

Filtrar los registros de encabezado (señalados con una H).

Asociar los correspondientes registros de detalles (señalados con una D) a cada uno de los registros de encabezado.

Tut-headerDetail-ENT

tut-headerDetail.mfd

Para conseguir nuestros objetivos, primero debemos asegurarnos de que los registros de encabezado y los registros de detalles tengan un campo común. En este caso, el campo común (también denominado clave) es el segundo campo del archivo CSV (es decir, OrderNo). En el archivo CSV, tanto el primer registro de encabezado como los dos registros de detalles que le siguen contienen el valor común 111.

 

El archivo Orders.csv se insertó dos veces a fin de hacer el proceso de asignación más intuitivo.

 

El archivo de esquema Tut-headerDetail.xsd tiene una estructura jerárquica: Order es el elemento raíz, Header es su elemento secundario y Detail es un elemento secundario de Header.

 

El primer archivo Orders.csv aporta los registros de encabezado Header (y todos los campos asignados) al elemento Header del archivo de esquema de destino. El componente de filtrado se usa para filtrar solamente los registros que empiecen por H. El elemento Rows aporta estos registros filtrados al elemento Header del esquema de destino.

 

El segundo archivo Orders.csv aporta los registros detallados Detail (y todos los campos asignados) filtrando los registros Detail que coinciden con la clave OrderNo del registro Header. Esto se consigue de esta manera:

 

Comparando el campo OrderNo del registro de encabezados con el mismo campo de los registros de detalles, utilizando la función equal (el contexto de prioridad se establece en el parámetro a para mejorar el rendimiento).

Utilizando la función Logical-and para suministrar sólo aquellos registros Detail que contengan el mismo campo OrderNo que el registro Header.

 

El elemento Rows suministra estos registros filtrados a los elementos Header y Detail del archivo de esquema, a través del parámetro on-true del componente de filtro.

 

En el panel Resultados se puede ver el archivo XML de salida. Cada registro de encabezado contiene sus propios datos más los registros detallados asociados que tengan el mismo número de pedido.

Head-detail-2

 

Veamos ahora otro ejemplo, que utiliza un archivo CSV ligeramente diferente y está disponible en la carpeta <Documentos>\Altova\MapForce2025\MapForceExamples\Tutorial\ como Head-detail-inline.mfd. La diferencia es que:

 

No hay ningún designador de registro (H, o D) disponible

Sigue existiendo un campo clave común, el primer campo del archivo CSV, tanto para los registros de encabezado como para los de detalles (Head-key, Detail-key...). El campo se asigna a OrderNo en el esquema destino.

Los campos Header y todos Detail respectivos están todos en la misma línea.

csv-hier-1

La asignación de datos se ha diseñado de la siguiente manera:

 

Los campos clave se asignan a los respectivos elementos OrderNo en el esquema de destino.

El elemento Detail del archivo de destino del esquema se ha duplicado y aparece como Detail (2). Esto le permite asignar el segundo conjunto de registros de detalles al elemento correcto.

El resultado de la asignación es el mismo archivo XML que se generó en el primer ejemplo de este apartado.

Head-detail-inline-ENT

Head-detail-inline.mfd

© 2018-2024 Altova GmbH