Как извлечь данные из файла 835 EDI? - PullRequest
0 голосов
/ 07 февраля 2019

у меня есть 835 EDI-файл,

ISA*00*          *00*          *33*83876          *ZZ*B00482000   *190128*1100*^*00501*000000001*0*T*:~
ST*835*000000001~
BPR*H*0*C*NON************20190128~
TRN*1*PK673981180*141138499245*PS0087726~
REF*EV*B048499999800~
REF*F2*1083~
DTM*405*20190128~

как мне извлечь значение ST, т.е. 000000001 и т. Д.,

я попытался преобразовать свой EDI-файл в формат XML, используя сначала SMOOKS, изатем извлекает данные через родительский и дочерний узлы.

  public static void main(String[] args) throws SmooksException, Exception {
    String modelURI = "urn:org.milyn.edi.unedifact:d99a-mapping:1.4";
    UNEdifactInterchangeParser parser = new UNEdifactInterchangeParser();
 //   parser.addMappingModels(modelURI, new URI("/"));
    parser.setFeature(EDIParser.FEATURE_IGNORE_NEWLINES, true);
    SAXHandler handler = new SAXHandler();
    parser.setContentHandler(handler);
    parser.parse(new InputSource(new java.io.FileInputStream(
            "myEDIfile.edi")));
    Document doc = handler.getDocument();
    // Here you have your document
    new XMLOutputter(Format.getPrettyFormat()).output(doc, System.out);
}

, но я получаю ошибку

Причина: org.xml.sax.SAXException: Неизвестно / Неожиданно UN /Код сегмента блока управления EDIFACT 'ISA'.

, если кто-нибудь может помочь мне с возможным решением, было бы здорово.Заранее спасибо ..

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Вы пытаетесь проанализировать X12 835 с помощью синтаксического анализатора EDIFACT.

Вместо UNEdifactInterchangeParser вам необходимо использовать соответствующий синтаксический анализатор X12.

0 голосов
/ 07 февраля 2019

Посмотрите на анализатор X12 - он обычно используется для таких файлов:

Документация: https://media.readthedocs.org/pdf/x12-parser/latest/x12-parser.pdf

GitHub Repo: https://github.com/imsweb/x12-parser

...