هل هناك أي محلل جيد المصدر مفتوح المصدر في جافا؟ [مغلق

StackOverflow https://stackoverflow.com/questions/2794262

  •  04-10-2019
  •  | 
  •  

سؤال

يمكن أن يكون تحليل Edifact تعهدًا شاقًا. هل هناك أي مكتبة جيدة مفتوحة المصدر يمكن أن تساعد؟

هل كانت مفيدة؟

المحلول

www.smooks.org - محلل النص القائم على القالب. لديهم أمثلة مناسبة EDI التي كنت أتطلع إلى استخدامها لتنفيذ Walmart 810s قبل أن يلقوا منتجاتي.

نصائح أخرى

محاولة: http://bots.sourceforge.netليست مكتبة كثيرًا ، ولكنها تترجم Edifact إلى التنسيق الذي تفضله .... XML .... CSV .... إلخ

تحليل Edifact سهل. يمكنك العثور على العديد من المكتبات للقيام بذلك. فمثلا،

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

كل هذه المكتبات ببساطة تقسم الرسائل إلى شرائح.

الجزء الصعب مع Edifact هو تحويل الرسالة إلى بعض الكائنات ذات معنى. هذا أمر محدد للغاية وأشك في أنك ستجد أي مكتبات. حتى لو وجدت واحدة ، فسيكون ذلك خاصًا بحقل ضيق ، مثل حجز الفندق.

لقد قمنا بتنفيذ 834 EDI إلى XML باستخدام Java + Smooks 1.6. إنه رائع!

<?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>

هناك واحد جيد في http://x12parser.codeplex.com. سيؤدي إلى إخراج أي 810 كـ XML أو HTML أو العودة إلى النص باستخدام مساحة بيضاء لسهولة الفحص. تتضمن اختبارات الوحدة عينة من Walmart 810 من الموقع: http://www.jobisez.com/edi/tp/guide.aspx؟doc=/edi-igs/walmart/810Invoice5010.pdf.

سوف يبدو النص المنسق هكذا:

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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top