EDIメッセージを読み込み、それをJavaオブジェクトに変換しようとしていますが、以下の例外があります。EDIストリームからJavaオブジェクトへの変換での例外
スレッド "main"の例外org.milyn.SmooksException: ソースをフィルタリングできませんでした。 org.milyn.Smooks._filterで org.milyn.delivery.sax.SmooksSAXFilter.doFilter(SmooksSAXFilter.java:64)で org.milyn.delivery.sax.SmooksSAXFilter.doFilter(SmooksSAXFilter.java:97) で(Smooks.java:526)at org.milyn.Smooks.filterSource(Smooks.java:482)at org.milyn.Smooks.filterSource(Smooks.java:456)at org.milyn.edi.unedifact.d97a com.ibm.gpohub.edi.common.SmooksSample.mainで.D97AInterchangeFactory.fromUNEdifact org.milyn.edi.unedifact.d97a.D97AInterchangeFactory.fromUNEdifact(D97AInterchangeFactory.java:40)で(D97AInterchangeFactory.java:58) ( SmooksSample.java:18) 原因:org.milyn.edisax.EDIParseException:EDIメッセージ処理 は失敗しました[ORDRSP] [D:97A:UN]。セグメント[FTX]、フィールド4(TEXT_LITERAL)、 コンポーネント1(Free_text _-_-1)に値が含まれると予想されます。現在 (セグメント番号6) org.milyn.edisax.EDIParser.mapComponent(EDIParser.java:687) org.milyn.edisax.EDIParser.mapField(EDIParser.java:636) org.milyn.edisax .EDIParser.mapFields(EDIParser.java:606)at org.milyn.edisax.EDIParser.mapSegment(EDIParser.java:564) org.milyn.edisax.EDIParser.mapSegments(EDIParser.java:535)at org .milyn.edisax.EDIParser.mapSegments(EDIParser.java:453)at org.milyn.edisax.EDIParser.parse(EDIParser.java:428) org.milyn.edisax.EDIParser.parse(EDIParser.java:410) )at org.milyn.edisax.unedifact.handlers.UNHHandler.process(UNHHandler.java:97) at org.milyn.edisax.unedif org.milyn.edisax.unedifact.UNEdifactInterchangeParserでact.handlers.UNGHandler.process(UNGHandler.java:58) でorg.milyn.edisax.unedifact.handlers.UNBHandler.process(UNBHandler.java:75) 。構文解析(UNEdifactInterchangeParser.java:113) at org.milyn.smooks.edi.unedifact.UNEdifactReader.parse(UNEdifactReader.java:75) at org.milyn.delivery.sax.SAXParser.parse(SAXParser.java:76) ) でorg.milyn.delivery.sax.SmooksSAXFilter.doFilter(SmooksSAXFilter.java:86) ... 7もっと
ここでは、コードスニペットです:
D97AInterchangeFactory d97InterChangeFactory = (D97AInterchangeFactory)SmooksFactoryImpl.D97A_FACTORY.getInstance();
InputStream ediSource = new FileInputStream("C:\\EDIFACT_MSG.txt");
UNEdifactInterchange interchange = d97InterChangeFactory.fromUNEdifact(ediSource);
if(interchange instanceof UNEdifactInterchange41){
List<UNEdifactMessage41> messages = ((UNEdifactInterchange41) interchange).getMessages();
for(UNEdifactMessage41 msg:messages){
System.out.println(msg.toString());
}
}
EDIMessage:
UNA:+。? 012 + + + + + + + D:97A UNB + UNOC:3 + 662424795TEST:16 + IBMEDIID:ZZ + 160330:1416 + IG-62779496 UNG + ORDRSP + 662424795テスト:16 + IBMEDIID:ZZ + 160330:1420 + FG-34160863 + UN + D:97A UNH + 80534414 + ORDRSP:D:97A:UN BGM + 231 + 20160330 + 4 DTM + 69:20150501150000UTC?+12:304 FTX + SSR +++:空白FTX + AAR ++ ST FTX + COI +++ CLW FTX + PRI ++ 8 FTX + DEL ++ 06 FTX + CUR +++すべてのアイテムを1つにパックする ボックスFTX + DIN +++出荷前に顧客に電話 FTX + PRD +++ 1:1:PC01 FTX + AAP RFF + SZ:ND RFF + ABO:Y RFF + CO:IBM1234501 DTM + 4:20150501010101UTC?+12:304 RFF + ACW:CASE_12345 RFF + ADG:Y RFF + ACH:Y RFF + ZOD:order_desk01 RFF + ZSD:IBM RFF + ZPD:30006672 RFF + ZCS:ブランク RFF + ZZZ NAD + SE + 300IBM NAD + BY + US00000001 ++ Coca Cola:CA + 9/F:841 WEBSTER ST:ストレス3:空白+ SAN FRANCISCO ++ 94117 + US CTA + PD +:Jordan Surzyn [email protected]: EM COM + 6508624654:TE NAD + OY + US00000001 ++ IBM フィールドサービス:CA + 9/F:900 WEBSTER ST:ストレス3:空白+ SAN FRANCISCO ++ 94117 + US CTA + CR +:Will Smith COM + Will @ ibm.com:EM COM + 6508624654:TE LIN + 10 PIA + 5 + 04X6076 IMD + F ++ :::キーボードNetVista キーボード(USB)QTY + 21:1:EA DTM + 69:20160610120000UTC?+12:304 0135 RFF + ZSB:01 RFF + ZRO:Y RFF + ZOR: からFTX +キーボードは良い条件 RFF + ZST:SOFT UNS + S UNT + 50 + 80534414 UNE + 1 + FG-34160863 UNZ + 1 + IG-62779496
誰もがどこ私が間違ってやっている、私を導くことはできますか?ありがとうございます。
はい、EDIFACTのデフォルトセグメントターミネータは、ここではUNAセグメントで指定された '文字です。 – MikeRalphson