2010-05-08 28 views

Antwort

10

www.smooks.org - Ein vorlagenbasierter Textparser. Sie haben geeignete EDI-Beispiele, die ich verwenden wollte, um sie für Walmart 810 zu implementieren, bevor sie meine Produkte verließen.

+2

Smooks scheint extrem XML-lastig zu sein, sieht aber ansonsten reif und gut aus. –

+0

Es ist. Ich würde gerne etwas wie Gemeingut-Digestor für EDIFACT sehen, ehrlich gesagt. Bevor ich überhaupt aufgehört habe, EDI zu machen, habe ich darüber nachgedacht, Smooks zu benutzen, um etwas ähnliches zu tun, einen einfachen EDI-Text für POJO. –

2

Parsing EDIFACT ist einfach. Sie können viele Bibliotheken finden, um es zu tun. Zum Beispiel

http://code.google.com/p/edicoder/

All diese Bibliotheken einfach brechen die Nachrichten in Segmente auf.

Der schwierige Teil mit EDIFACT besteht darin, die Nachricht in einige sinnvolle Objekte umzuwandeln. Dies ist sehr anwendungsspezifisch und ich bezweifle, dass Sie irgendwelche Bibliotheken finden werden. Selbst wenn Sie einen finden, wird er spezifisch für ein enges Feld sein, wie eine Hotelreservierung.

+7

Edicoder sieht aus wie es jeden Parsing-Code noch nicht wirklich umgesetzt hat. Ich stimme den EDIFACT-Transformationen zu. –

0

Es ist gut bei http://x12parser.codeplex.com. Es wird alle 810 als XML, HTML oder zurück zu Text mit Leerzeichen zur einfacheren Überprüfung ausgeben. Die Komponententests enthalten eine Probe des Walmart 810 von der Website: http://www.jobisez.com/edi/tp/guide.aspx?doc=/edi-igs/Walmart/810Invoice5010.pdf.

Der formatierte Text würde wie folgt aussehen:

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 
     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 
+1

x12parser ist in .NET implementiert, nicht in Java ... :-) –

1

Wir 834 EDI zu XML mit Java + Smooks 1.6 implementiert haben. Es ist toll!

<?xml version="1.0" encoding="UTF-8"?> 

<medi:description name="834 EDI TO XML" version="1.0" /> 

<medi:delimiters segment="&#10;" field="*" component="^" 
    sub-component="#" escape="~"/> 

<medi:segments xmltag="FILE"> 

    <medi:segment segcode="ISA" xmltag="ISAHeader"> 
     <medi:field xmltag="AuthorziationInformationQualifier" /> 
     <medi:field xmltag="AuthorziationInformation" /> 
     <medi:field xmltag="SecurityInformationQualifier" /> 
     <medi:field xmltag="InterchangeIDQualifier" /> 
     <medi:field xmltag="InterchangeSenderID" /> 
     <medi:field xmltag="InterchangeIDQualifier" /> 
     <medi:field xmltag="InterchangeReceiverID" /> 
     <medi:field xmltag="InterchangeDate" /> 
     <medi:field xmltag="InterchangeTime" /> 
     <medi:field xmltag="RepetitionSeparator" /> 
     <medi:field xmltag="InterchangeControlVersionNumber" /> 
     <medi:field xmltag="InterchangeControlNumber" /> 
     <medi:field xmltag="AcknowledgmentRequested" /> 
     <medi:field xmltag="InterchangeUsageIndicator" /> 
     <medi:field xmltag="ComponentElementSeparator" /> 
    </medi:segment> 

    <medi:segmentGroup xmltag="BenefitEnrollmentRequest" maxOccurs="-1"> 
     <medi:segment minOccurs="0" maxOccurs="-1" segcode="GS" xmltag="BenefitEnrollmentRequestHeader"> 
      <medi:field xmltag="FunctionalIDCode" /> 
      <medi:field xmltag="ApplicationSendsCode" /> 
      <medi:field xmltag="ApplicationRecsCode" /> 
      <medi:field xmltag="Date" /> 
      <medi:field xmltag="Time" /> 
      <medi:field xmltag="GroupCtrlNumber" /> 
      <medi:field xmltag="ResponsibleAgencyCode" /> 
      <medi:field xmltag="ReleaseIDCode" /> 
      </medi:segment> 

     <medi:segmentGroup xmltag="BenefitEnrollmentMaintenance" maxOccurs="-1"> 
       <medi:segment minOccurs="0" maxOccurs="-1" segcode="ST" xmltag="BenefitEnrollmentMaintenanceHeader"> 
         <medi:field xmltag="TransactionSetIdentifierCode" /> 
         <medi:field xmltag="TransactionSetControlNumber" /> 
         <medi:field xmltag="ImplementationConventionReference" /> 
       </medi:segment> 
      <medi:segment minOccurs="0" segcode="BGN" xmltag="Begin" ignoreUnmappedFields="true"> 
        <medi:field xmltag="TSPurposeCode" /> 
        <medi:field xmltag="ReferenceIdent" /> 
        <medi:field xmltag="Date" /> 
        <medi:field xmltag="Time" /> 
        <medi:field xmltag="TimeCode" /> 
        <medi:field xmltag="ReferenceIdent" /> 
        <medi:field xmltag="TransactionTypeCode" /> 
        <medi:field xmltag="ActionCode" /> 
      </medi:segment> 

      <medi:segment minOccurs="0" segcode="REF" xmltag="Ref_38" ignoreUnmappedFields="true"> 
        <medi:field xmltag="ReferenceIdentQual" /> 
        <medi:field xmltag="ReferenceIdent" /> 
      </medi:segment> 

      <medi:segment minOccurs="0" segcode="DTP" xmltag="Dtp_007" ignoreUnmappedFields="true"> 
        <medi:field xmltag="DateTimeQualifier" /> 
        <medi:field xmltag="DateTimePeriodFormatQualifier" /> 
        <medi:field xmltag="DateTimePeriod" /> 
      </medi:segment> 

      <medi:segment minOccurs="0" segcode="QTY" xmltag="To" ignoreUnmappedFields="true"> 
        <medi:field xmltag="QuantityQualifier" /> 
        <medi:field xmltag="Quantity" /> 
      </medi:segment> 

      <medi:segment minOccurs="0" segcode="N1" xmltag="Sponsor" ignoreUnmappedFields="true"> 
        <medi:field xmltag="EntityIDCode" /> 
        <medi:field xmltag="Name" /> 
        <medi:field xmltag="IDCodeQualifier" /> 
        <medi:field xmltag="IDCode" /> 
      </medi:segment> 

      <medi:segment minOccurs="0" segcode="N1" xmltag="Issuer" ignoreUnmappedFields="true"> 
        <medi:field xmltag="EntityIDCode" /> 
        <medi:field xmltag="Name" /> 
        <medi:field xmltag="IDCodeQualifier" /> 
        <medi:field xmltag="IDCode" /> 
      </medi:segment> 

      <medi:segment minOccurs="0" segcode="N1" xmltag="Agent" ignoreUnmappedFields="true"> 
        <medi:field xmltag="EntityIDCode" /> 
        <medi:field xmltag="Name" /> 
        <medi:field xmltag="IDCodeQualifier" /> 
        <medi:field xmltag="IDCode" /> 
        <medi:segment minOccurs="0" segcode="ACT" xmltag="Act" ignoreUnmappedFields="true"> 
        <medi:field xmltag="AccountNumber" /> 
        <medi:field xmltag="Name" /> 
        <medi:field xmltag="IDCodeQualifier" /> 
        <medi:field xmltag="IDCode" /> 
        <medi:field xmltag="AcctNumberQualifier" /> 
        <medi:field xmltag="AccountNumber" /> 
      </medi:segment> 
      </medi:segment> 
      <medi:segment minOccurs="0" segcode="N1" xmltag="Broker" ignoreUnmappedFields="true"> 
        <medi:field xmltag="EntityIDCode" /> 
        <medi:field xmltag="Name" /> 
        <medi:field xmltag="IDCodeQualifier" /> 
        <medi:field xmltag="IDCode" /> 
        <medi:segment minOccurs="0" segcode="ACT" xmltag="Act" ignoreUnmappedFields="true"> 
        <medi:field xmltag="AccountNumber" /> 
        <medi:field xmltag="Name" /> 
        <medi:field xmltag="IDCodeQualifier" /> 
        <medi:field xmltag="IDCode" /> 
        <medi:field xmltag="AcctNumberQualifier" /> 
        <medi:field xmltag="AccountNumber" /> 
      </medi:segment> 
      </medi:segment> 

      <!-- 
      <medi:segment minOccurs="0" segcode="N1" xmltag="Sponsor"> 
        <medi:field xmltag="Name" /> 
      </medi:segment> 
      <medi:segmentGroup xmltag="Member" maxOccurs="-1"> 
       <medi:segment minOccurs="0" maxOccurs="-1" segcode="INS" xmltag="MemberHeader"> 
         <medi:field xmltag="HeaderName" /> 
         </medi:segment> 

       <medi:segment minOccurs="0" segcode="DTP" xmltag="DOB"> 
        <medi:field xmltag="Month" /> 
      </medi:segment> 
       <medi:segment minOccurs="0" maxOccurs="-1" segcode="LE" xmltag="MemberFooter" ignoreUnmappedFields="true"> 
         <medi:field xmltag="FooterName"/> 
         </medi:segment> 
      </medi:segmentGroup>--> 

      <medi:segment minOccurs="0" segcode="SE" xmltag="BenefitEnrollmentMaintenanceFooter"> 
      <medi:field xmltag="TransactionSetIdentifierCode" /> 
         <medi:field xmltag="TransactionSetControlNumber" /> 
      </medi:segment> 
     </medi:segmentGroup> 

     <medi:segment minOccurs="0" segcode="GE" xmltag="BenefitEnrollmentRequestFooter"> 
      <medi:field xmltag="ZFA" /> 
      </medi:segment> 
    </medi:segmentGroup> 

    <medi:segment segcode="IEA" xmltag="ISAFooter"> 
     <medi:field xmltag="CCC" /> 
     </medi:segment> 
</medi:segments>