2012-06-18 20 views
5

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

ejemplo 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 
+0

Su pregunta es sobre 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 regresando. – Andrew

+0

@ Andrew estás en lo correcto. Esto es ANSI X12, no EDIFACT – Chandana

+0

Implementé EDI a XML usando java. Consulte aquí: [introduzca la descripción del enlace aquí] (http://stackoverflow.com/questions/2794262/is-there-any-good-open-source-edifact-parser-in-java) –

Respuesta

3

Try usando Smooks. Desde la página:

Smooks es un marco extensible para la creación de aplicaciones para el procesamiento de XML y no XML de datos (CSV, EDI, Java, etc.) utilizando Java.

+1

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 – palto

+0

¿es posible procesar elementos como 'REF * IA * 123456170 * X5T REF * DP * 00017' en Smooks? – Chandana

+0

Smooks no es compatible con X12 y el proyecto parece estar muerto (el último cambio en el repositorio de Git es de 2011). – Torben

6

Prueba de esto, edireader

El analizador distingue entre ANSI X.12 y estándares EDI EDIFACT mediante inspección y utiliza un patrón de fábrica para construir un analizador subclase apropiada.

El analizador puede integrarse dentro de su aplicación Java de la misma forma 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.

+0

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 – Chandana

0

Si está abierto a un producto comercial, eche un vistazo a Oakland Data Transformer. 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

¿Es de código abierto? – RCS

0

puedes probar bots: http://bots.sourceforge.net no es java, sino python. no es una 'biblioteca' sino una aplicación. maneja x12 OK, incl 810. se puede traducir al formato que necesita (XML, CSV, archivos planos)

0

Podemos utilizar Apache camello, camello es muy fácil y solución extensible a 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

¿POR QUÉ usaría json cuando pudiera deshacer 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. –

Cuestiones relacionadas