¿Hay algún buen analizador X12 en Java?

¿Hay algún buen analizador X12 en Java que pueda procesar la especificación Walmart 810?

Ejemplo de EDI:

ISA*00*          *00*          *16*102096559TEST  *14*PARTNERTEST    *071214*1406*U*00040*810000263*1*T*>
  GS*IN*102096559TEST*PARTNER*20071214*1406*810000263*X*004010
    ST*810*0001
      BIG*20050205*6463367*20050202*3376103367
      REF*IA*123456170*X5T
      REF*DP*00017
      REF*MR*0020
      N1*SU*SUPPLIER NAME
      N1*ST*WAL-MART 100*UL*0078742000992
        N3*406 SOUTH WALTON BLVD
        N4*BENTONVILLE*AR*72712 
      ITD*05*15*****45
      DTM*011*20050205
      FOB*CC
      IT1**1080*EA*3.61**IN*001719653*UP*022108955228*UK*            00221089552284       
        PID*F****ITEM DESCRIPTION
        SAC*A*I410***2350*******02
      TDS*387530
      CAD*T***RDWT*ROADWAY**BM*123456789
      ISS*1080*EA*100*LB
      CTT*1
    SE*19*0001
  GE*1*810000263
IEA*1*810000263
5
@ Andrew, tienes razón. Esto es ANSI X12, no EDIFACT
agregado el autor Chandana, fuente
Su pregunta es acerca de EDIFACT, pero su ejemplo no es EDIFACT, es ANSI X12. Mire BOTS en SourceForge. O mira un producto de traducción comercial. ¿No estás enviando el 810 a Walmart? Me parece que está GENERANDO X12 (a menos que trabaje para Walmart o una agencia de "factores" y esté recibiendo copias de carbono de los datos), sin analizar. Analizarías el 997 volviendo.
agregado el autor Andrew, fuente
Implementé EDI a xml usando java. Consulte aquí: ingrese la descripción del enlace aquí
agregado el autor Rajasekaran Kandhasamy, fuente
Compruebe aquí: ingrese la descripción del enlace aquí < a href = "http://stackoverflow.com/questions/2794262/is-there-any-good-open-source-edifact-parser-in-java" title = "¿hay algún analizador de edifacts de código abierto bueno en Java?" > stackoverflow.com/questions/2794262/…
agregado el autor Rajasekaran Kandhasamy, fuente

5 Respuestas

Try this, edireader

El analizador distingue entre los estándares ANSI X.12 y EDIFACT EDI por inspección y usa un patrón de fábrica para construir una subclase del analizador apropiado.

El analizador sintáctico puede integrarse dentro de su aplicación Java de la misma manera que lo haría con un analizador XML, evitando las interfaces propietarias y basadas en archivos que a menudo se usan con los traductores EDI convencionales.

6
agregado
Obtengo excepción de sintaxis recuperable: com.berryworks.edireader.error.TransactionCountException - Error de recuento de transacciones en el segmento GE. Se esperaba 1 en lugar de 164 en el segmento 317, campo 2 error al procesar EDI
agregado el autor Chandana, fuente

Intenta usar Smooks . De la página:

Smooks es un marco extensible para crear aplicaciones para procesar xml y sin XML   datos (CSV, EDI , Java, etc.) utilizando Java.

3
agregado
¿es posible procesar elementos como REF * IA * 123456170 * X5T REF * DP * 00017 en Smooks?
agregado el autor Chandana, fuente
También lo he usado y era bastante sólido. Encontré la documentación un poco escasa, pero eso fue hace años. Puede haber cambiado
agregado el autor palto, fuente
Smooks no es compatible con X12 y el proyecto parece estar muerto (el último cambio en el repo de Git es de 2011).
agregado el autor Torben, fuente

Si está abierto a un producto comercial, eche un vistazo al Transformador de datos de Oakland . Está escrito en Java, tiene un diseñador basado en Eclipse y una API Java o integración con Apache Camel, Mule ESB y OSGi Blueprint. Puede mapear gráficamente fácilmente a XML, base de datos, objetos Java u otras cosas.

Deberá ponerse en contacto con Oakland Software cuando lo descargue para obtener las especificaciones del X12 4010 810 que es lo que está utilizando.

0
agregado
¿Es de código abierto?
agregado el autor RCS, fuente

puedes probar bots: http://bots.sourceforge.net no es java, sino python. no es una "biblioteca" sino una aplicación. maneja x12 OK, incluye 810. Puede traducirlo al formato que necesita (xml, csv, archivo plano)

0
agregado

Podemos utilizar apache camel, camello es una solución muy fácil y extensible de esto,

Esto dará un json objetos, después de que podamos analizar los objetos json y luego obtener los valores.

XmlJsonDataFormat xmlJsonFormat = new XmlJsonDataFormat();
        xmlJsonFormat.setEncoding("UTF-8");
        xmlJsonFormat.setForceTopLevelObject(true);
        xmlJsonFormat.setTrimSpaces(true);
        xmlJsonFormat.setRootName("newRoot");
        xmlJsonFormat.setSkipNamespaces(true);
        xmlJsonFormat.setRemoveNamespacePrefixes(true);
   // xmlJsonFormat.setExpandableProperties(Arrays.asList("d", "e"));

          from("file:sftpdata/x12files")
            .log("Before unmarshal with SmooksDataFormat:").log("${body}")
            .unmarshal(new SmooksDataFormat("smooks-config1.xml"))
            .log("After unmarshal with SmooksDataFormat:").log("${body}")
           .marshal(xmlJsonFormat)
             .log("After marshalling with Json library:").log("${body}")
             .process(new X12Processor()).log("X12 file processed")
            .to("mock:result");
0
agregado
¿POR QUÉ usarías json cuando pudieras destrabar directamente en POJO? ¿Por qué no utilizar JAXB pojo directamente en lugar de convertir el resultado de JAXB a objeto json y luego convertirlo de nuevo a POJO ??? La longitud que la gente usa para evitar usar simplemente JAXB es desconcertante.
agregado el autor Blessed Geek, fuente