Gibt es einen guten X12-Parser in Java?

Gibt es einen guten X12 Parser in Java, der die Walmart 810 Spezifikation verarbeiten kann?

EDI-Beispiel:

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
hinzugefügt bearbeitet
Ansichten: 1
@ Andrew du bist richtig. Dies ist ANSI X12, nicht EDIFACT
hinzugefügt der Autor Chandana, Quelle
Ihre Frage fragt nach EDIFACT, aber Ihr Beispiel ist nicht EDIFACT - es ist ANSI X12. Schau dir BOTS bei SourceForge an. Oder schauen Sie sich ein kommerzielles Übersetzungsprodukt an. Schicken Sie die 810 nicht an Walmart? Scheint mir, dass Sie X12 GENERIEREN (es sei denn, Sie arbeiten für Walmart oder eine "Faktor" -Agentur und bekommen Kohlenstoff auf die Daten kopiert), nicht analysieren. Du würdest den 997 analysieren, der zurückkommt.
hinzugefügt der Autor Andrew, Quelle
Ich habe EDI zu xml mit Java implementiert. Siehe hier: Linkbeschreibung hier eingeben
hinzugefügt der Autor Rajasekaran Kandhasamy, Quelle
Überprüfen Sie hier: Linkbeschreibung hier eingeben < a href = "http://stackoverflow.com/questions/2794262/is-there-any-good-open-source-edifact-parser-in-java" title = "Gibt es einen guten Open-Source-Edifact-Parser in Java" > stackoverflow.com/questions/2794262/…
hinzugefügt der Autor Rajasekaran Kandhasamy, Quelle

5 Antworten

Try this, edireader

Der Parser unterscheidet zwischen ANSI X.12 und EDIFACT EDI-Standards durch Inspektion und verwendet ein Factory-Muster, um eine geeignete Parser-Unterklasse zu konstruieren.

Der Parser kann genauso in Ihre Java-Anwendung eingebettet werden wie ein XML-Parser, wodurch die dateibasierten und proprietären Schnittstellen vermieden werden, die bei herkömmlichen EDI-Übersetzern häufig verwendet werden.

6
hinzugefügt
Ich erhalte Behebbare Syntaxausnahme: com.berryworks.edireader.error.TransactionCountException - Transaktionsanzahlfehler im GE-Segment. Erwartete 1 anstelle von 164 bei Segment 317, Feld 2 Fehler bei der Verarbeitung von EDI
hinzugefügt der Autor Chandana, Quelle

Versuchen Sie es mit Smooks . Von der Seite:

Smooks ist ein erweiterbares Framework zum Erstellen von Anwendungen für die Verarbeitung von xml und Nicht-XML   Daten (CSV, EDI , Java usw.) mit Java.

3
hinzugefügt
ist es möglich, REF * IA * 123456170 * X5T REF * DP * 00017 ähnliche Elemente in Smooks zu verarbeiten?
hinzugefügt der Autor Chandana, Quelle
Ich habe es auch benutzt und es war ziemlich solide. Ich fand die Dokumentation ein wenig fehlt, aber das war vor Jahren. Es könnte sich geändert haben.
hinzugefügt der Autor palto, Quelle
Smooks unterstützt X12 nicht und das Projekt scheint tot zu sein (die letzte Änderung am Git Repo ist von 2011).
hinzugefügt der Autor Torben, Quelle

Wenn Sie für ein kommerzielles Produkt offen sind, werfen Sie einen Blick auf den Oakland Data Transformer . Es ist in Java geschrieben, hat einen Eclipse-basierten Designer und eine Java-API oder eine Integration mit Apache Camel, Mule ESB und OSGi Blueprint. Sie können es problemlos grafisch auf XML, Datenbank, Java-Objekte oder andere Dinge abbilden.

Sie müssen Oakland Software kontaktieren, wenn Sie es herunterladen, um die Spezifikationen für das X12 4010 810 zu erhalten, das Sie verwenden.

0
hinzugefügt
Ist es Open Source?
hinzugefügt der Autor RCS, Quelle

Sie könnten versuchen, Bots: http://bots.sourceforge.net Es ist nicht Java, sondern Python. Es ist keine "Bibliothek", sondern eine Anwendung. Griffe x12 OK, inkl. 810. Sie können es in das Format konvertieren, das Sie benötigen (xml, csv, flache Datei)

0
hinzugefügt

Wir können Apache Kamel verwenden, Kamel ist sehr einfach und erweiterbare Lösung von diesem,

Dies ergibt ein JSON-Objekt, nachdem wir die JSON-Objekte analysiert haben und dann die Werte erhalten.

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
hinzugefügt
WARUM würdest du JSON benutzen, wenn du direkt in POJO meldest? Warum nicht das JAXB-Pojo direkt verwenden, anstatt das JAXB-Ergebnis in ein json-Objekt zu konvertieren und dieses dann wieder in POJO umzuwandeln ??? Die Länge, die die Leute verwenden, um die Verwendung von JAXB zu vermeiden, ist verwirrend.
hinzugefügt der Autor Blessed Geek, Quelle