هل هناك أي محلل X12 جيد في جافا؟

هل هناك أي محلل X12 جيد في Java يمكنه معالجة مواصفات Walmart 810؟

مثال 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
@ أندرو أنت على صواب. هذا هو ANSI X12 ، وليس EDIFACT
وأضاف المؤلف Chandana, مصدر
سؤالك يسأل عن EDIFACT ، ولكن المثال الخاص بك ليس EDIFACT - هو ANSI X12. انظروا إلى BOTS على SourceForge. أو إلقاء نظرة على منتج ترجمة تجارية. لا ترسل 810 إلى وول مارت؟ يبدو لي أنك تقوم بتوليد X12 (إلا إذا كنت تعمل لصالح وكالة Walmart أو وكالة "عامل" وتقوم بنسخ الكربون على البيانات) ، وليس التحليل. يمكنك تحليل 997 العودة مرة أخرى.
وأضاف المؤلف Andrew, مصدر
لقد نفذت EDI إلى xml باستخدام جافا. راجع هنا: أدخل وصف الرابط هنا
وأضاف المؤلف Rajasekaran Kandhasamy, مصدر
تحقق هنا: أدخل وصف الرابط هنا < a href = "http://stackoverflow.com/questions/2794262/is-there-any-good-open-source-edifact-parser-in-java" title = "هل يوجد أي محلل برمجي جيد مفتوح المصدر في جافا" > stackoverflow.com/questions/2794262/&hellip،
وأضاف المؤلف Rajasekaran Kandhasamy, مصدر

5 إجابة

Try this, edireader

يميز المحلل اللغوي بين معايير ANSI X.12 و EDIFACT EDI بالتفتيش ويستخدم نمط مصنع لإنشاء فئة فرعية محلل مناسبة.

يمكن تضمين المحلل اللغوي في تطبيق Java بنفس الطريقة التي تستخدم بها محلل xml ، مع تجنب استخدام الواجهات الخاصة بالملفات والملكية التي يتم استخدامها غالبًا مع مترجم EDI التقليدي.

6
وأضاف
أحصل على استثناء بناء الجملة القابل للاسترداد: com.berryworks.edireader.error.TransactionCountException - خطأ في عدد المعاملات في شريحة GE. المتوقع 1 بدلاً من 164 في الجزء 317 ، الحقل 2 خطأ عند معالجة EDI
وأضاف المؤلف Chandana, مصدر

حاول استخدام Smooks . من الصفحة:

Smooks هو إطار قابل للتوسعة لإنشاء تطبيقات لمعالجة xml و xml غير   البيانات (CSV ، EDI ، جافا ، إلخ) باستخدام جافا.

3
وأضاف
هل من الممكن معالجة REF * IA * 123456170 * X5T REF * DP * 00017 مثل العناصر في Smooks؟
وأضاف المؤلف Chandana, مصدر
لقد استخدمتها أيضًا وكانت قوية جدًا. لقد وجدت الوثائق تفتقر إلى بعض الشيء ولكن ذلك كان منذ سنوات. ربما تغيرت.
وأضاف المؤلف palto, مصدر
لا يدعم Smooks X12 ويبدو أن المشروع ميت (التغيير الأخير إلى Git repo هو من عام 2011).
وأضاف المؤلف Torben, مصدر

إذا كنت منفتحا على منتج تجاري ، فقم بإلقاء نظرة على Oakland Data Transformer . مكتوب بلغة جافا ، ولديه مصمم مبني على Eclipse ، و Java API أو تكامل مع Apache Camel ، و Mule ESB ، و OSGi Blueprint. يمكنك بسهولة تخطيطها بيانيا إلى xml ، قاعدة البيانات ، كائنات جافا أو أشياء أخرى.

ستحتاج إلى الاتصال بـ Oakland Software عند تنزيله للحصول على مواصفات X12 4010 810 وهو ما تستخدمه.

0
وأضاف
هل هو مفتوح المصدر؟
وأضاف المؤلف RCS, مصدر

يمكنك تجربة برامج التتبع: http://bots.sourceforge.net انها ليست جافا ، ولكن الثعبان. انها ليست "مكتبة" ولكن تطبيق. مقابض x12 موافق ، بما في ذلك 810. يمكنك ترجمتها إلى الصيغة التي تحتاجها (xml ، csv ، ملف مسطح)

0
وأضاف

يمكننا استخدام أباتشي الجمل ، الجمل هو الحل السهل والموسع لهذا ،

هذا سيعطي كائنات json ، بعد ذلك يمكننا تحليل كائنات json ثم الحصول على القيم.

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
وأضاف
لماذا تستخدمون json عندما تكونون غير مرتبطين مباشرة في POJO؟ لماذا لا تستخدم برنامج JAXB pojo مباشرة بدلاً من تحويل نتيجة JAXB إلى كائن json ثم تحويل ذلك إلى POJO ؟؟؟ طول الناس يذهب لتجنب استخدام ببساطة JAXB محير.
وأضاف المؤلف Blessed Geek, مصدر