Pregunta

Tengo un esquema de archivo plano que tiene un encabezado y registros detallados. Se parece a esto:

HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***

Necesito agregar dos líneas en blanco al final del mensaje. En este momento, si tengo varios registros, obtengo el siguiente resultado:

HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***
HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***

Lo que quiero ver que suceda es algo como esto:

HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***


HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***

Podría crear un componente de canalización personalizado para hacer esto, pero me pregunto si hay una forma más sencilla de obtener lo que necesito.

¿Fue útil?

Solución

Debería poder lograr lo que desea utilizando las propiedades Delimitador del esquema de archivo plano.

Basado en su archivo de ejemplo, creé un esquema con la siguiente estructura de registro:

<Schema>    
  <Root>    
    <HDRGroup>    
      <HDR>    
      <LIN>    

Si hace clic en el nodo raíz de su esquema, debería ver una lista de propiedades para este nodo raíz. Una sección de propiedades tiene el encabezado 'Archivo plano'. En esta sección de archivo plano, las tres primeras propiedades que puede establecer son Delimitador secundario, Tipo de delimitador secundario y Orden secundario.

Aquí es donde configura el esquema para crear las líneas en blanco (en este caso, CR LF, pero puede configurar diferentes cosas según lo necesite) Para su ejemplo, configuro lo siguiente:

Child Delimiter: 0x0D 0x0A 0x0D 0x0A    
Child Delimiter Type: Hexadecimal    
Child Order: Infix

0x0D 0x0A es un avance de línea de retorno de carro, por lo que lo anterior simplemente crea dos líneas en blanco, infijadas entre cada elemento secundario del nodo raíz.

El < HDRGroup > luego funciona para asegurarse de que cada encabezado y sus líneas se mantengan juntas. Para su configuración de delimitador configuré:

Child Delimiter: 0x0D 0x0A    
Child Delimiter Type: Hexadecimal    
Child Order: Postfix

El < HDR > y < LIN > los registros contienen la definición de esquema real para sus líneas de mensaje, delimitadas con un asterisco.

Este esquema funciona para algo que me parece lo que usted ha pedido: este tipo de esquema de archivo plano y cómo analiza un archivo depende en gran medida de los pequeños detalles, como qué tipo de saltos de línea hay y si hay saltos de línea al final del archivo.

Los principios del uso de los delimitadores se mantendrán, es probable que necesites modificar la configuración.

Otros consejos

Para cualquiera que le importe, finalmente cedí y escribí un componente de canalización personalizado para lograr esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top