Pregunta

¿Hay un formato estándar o abierta que puede ser usado para describir el formateo de un archivo plano. Mi empresa integra muchos diferentes formatos de archivo al cliente. Con un archivo XML que es fácil de obtener o crear un XSD para describir el formato de archivo XML. Busco algo similar para describir un formato de archivo plano (ancho fijo, delimitado etc). Stylus Studio utiliza un formato .conv propietario para hacer esto. .Conv ese formato se puede utilizar en tiempo de ejecución para transformar un archivo plano arbitrario en un archivo XML. Me preguntaba si había algún método basado más abierta o normas para hacer lo mismo.

Estoy buscando un método para describir una variedad de formatos de archivos planos si están anchura fija o delimitados, por lo CSV no es una respuesta a esta pregunta.

¿Fue útil?

Solución

XFlat: http://www.infoloom.com/gcaconfs/WEB/philadelphia99/ lyons.HTM # N29 http://www.unidex.com/overview.htm

Para los casos complejos (por ejemplo, archivos de registro) se puede considerar un analizador léxico.

Otros consejos

Acerca de seleccionando formatos de archivos planos existentes: No es la formato de valores (CSV) separada por comas. O, más generalmente, DSV . Pero estos no son "de ancho fijo", ya que hay un carácter delimitador (como una coma) que separa las células individuales. Tenga en cuenta que aunque CSV es estandarizada , no todo el mundo se adhiere a la norma. Además, CSV puede ser simple para sus propósitos, ya que no permite una estructura de documento rica.

A este respecto, la estandarizado y sólo ligeramente más complejo (pero por lo tanto más útil) Formatos JSON y YAML son una mejor opción. Ambos son compatibles fuera de la caja por un montón de idiomas.

Su mejor opción es tener un vistazo a todos los idiomas que figuran como no binario en este resumen y luego determinar qué funciona mejor para usted.

Acerca de formatos de archivos planos: Esto podría ser muy fácil o difícil, dependiendo del formato. Aunque en la mayoría de los casos existen soluciones más sencillas, de una manera que va a trabajar, en general, es para ver el formato de archivo como un formales gramática , y escribir lexer / analizador para ello. Pero tengo que admitir, que es bastante maquinaria pesada.

Si tienes suerte, un par de href="http://en.wikipedia.org/wiki/Regular_expression" puede hacer el truco. La mayoría de los formatos no se prestan para que, por Si planea escribir un analizador léxico / analizador mismo, puedo aconsejar PLY (Python Lex-Yacc). Pero muchas otras soluciones existen, en muchos idiomas diferentes, muchos de ellos más conveniente que la vieja escuela Lex y Yacc . Para más información, consulte ¿Qué generador de análisis recomienda?


: Sí, eso puede ser un eufemismo
. : href="http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html" rel="nofollow noreferrer"> formato de dirección de correo electrónico que describe adecuadamente Incluso el no es trivial.

Al final del día, es probable que tenga que definir su propio estándar de archivo que atiende específicamente a sus necesidades de almacenamiento. Lo que sugiero es el uso de XML, YAML o JSON como su contenedor interno para todos los tipos de archivos que reciba. Además de esto, usted tendrá que aplicar un poco de lógica de validación adicional para mantener los meta-datos, tales como los tamaños de las columnas de los archivos de ancho fijo (para importar y exportar a partir de ancho fijo). Alternativamente, se puede almacenar o vincular un conjunto de metadatos para cada archivo a convertir al formato interno.

Puede haber un estándar por ahí, pero es demasiado duro para crear 'una talla para todos' soluciones para estos problemas. Hay entidad herramientas de gestión de relaciones por ahí (Talend, otros) que hacen que la creación de estas asignaciones más fácil, pero todavía tendrá que pasar mucho tiempo mantener las definiciones y reglas de formato de archivo.

En cuanto a la aplicación de ancho de columna, xml podría ser la mejor solución como se puede describir los formatos utilizando esquemas XML (con la restricción de longitud). Para YAML o JSON, puede que tenga que escribir su propia lógica para esto, aunque estoy seguro de que alguien ha llegado a una solución.

vs delimitados por comas archivos de texto para su posterior de referencia.

No sé si hay algún formato estándar o abierta para describir un formato de archivo plano. Pero una industria ha hecho esto: la industria bancaria. Las instituciones financieras están realmente comunicando mediante mensaje normalizado a través de una red dedicada llama SWIFT . mensajes SWIFT fueron originalmente posicional (antes SWIFTML, la versión XMLified). No sé si es una buena sugerencia, ya que es un poco oscuro, pero tal vez usted podría mirar en el Guía de formato SWIFT , puede le da algunas ideas.

Habiendo dicho esto, echa un vistazo a Flatworm , un analizador de archivos planos humilde. Lo he utilizado para analizar el archivo de posición y / o CSV y gustó su formato XML descriptor. Puede ser una sugerencia mejor que SWIFT:)

CSV

  

CSV es un formato de datos delimitado que tiene campos / columnas separadas por el carácter coma y registros / filas separadas por saltos de línea. Los campos que contienen un carácter especial (coma, nueva línea o comillas dobles), deben ir entre comillas dobles. Sin embargo, si una línea contiene una sola entrada que es la cadena vacía, puede estar entre comillas dobles. Si el valor de un campo contiene un carácter de comillas dobles se escapó mediante la colocación de otro carácter de comillas dobles al lado de él. El formato de archivo CSV no requiere una codificación específica de carácter, orden de bytes, o el formato de terminación de línea.


La entrada CSV en la wikipedia me permitió encontrar un de formatos de serialización de datos es bastante más de lo que pidió.

Lo único parecido que conozco es Hachoir, que en la actualidad puede analizar 70 formatos de archivo:

http://bitbucket.org/haypo/hachoir/wiki/Home

No estoy seguro de si realmente se considera como un lenguaje declarativo, ya que está basado analizador plug-in, pero parece que funciona, y es extensible, que puede satisfacer sus necesidades de bien.

Como acotación al margen, no son interesantes, formatos de archivos planos extensibles estandarizados, tales como IFF (Interchange File Format).

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