Existe algum bom analisador X12 em Java?

Existe algum bom analisador X12 em Java que possa processar a especificação do Walmart 810?

Exemplo de 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
adicionado editado
Visualizações: 1
@ Andrew você está correto. Isso é ANSI X12, não EDIFACT
adicionado o autor Chandana, fonte
Sua pergunta é sobre EDIFACT, mas seu exemplo não é EDIFACT - é ANSI X12. Olhe para BOTS no SourceForge. Ou veja um produto de tradução comercial. Você não está enviando o 810 para o Walmart? Parece-me que você está criando X12 (a menos que você trabalhe para o Walmart ou para uma agência de "fator" e esteja obtendo carbono copiado nos dados), sem analisar. Você iria analisar o 997 voltando dentro
adicionado o autor Andrew, fonte
Eu implementei EDI para xml usando java. Consulte aqui: insira a descrição do link aqui
adicionado o autor Rajasekaran Kandhasamy, fonte
Verifique aqui: insira a descrição do link aqui < a href = "http://stackoverflow.com/questions/2794262/is-there-any-good-open-source-edifact-parser-in-java" title = "existe algum bom analisador de código aberto para construir em java" > stackoverflow.com/questions/2794262/…
adicionado o autor Rajasekaran Kandhasamy, fonte

5 Respostas

Try this, edireader

O analisador diferencia entre os padrões ANSI X.12 e EDIFACT EDI por inspeção e usa um padrão de fábrica para construir uma subclasse de analisador apropriada.

O analisador pode ser incorporado em seu aplicativo Java da mesma maneira que um analisador XML, evitando as interfaces proprietárias e baseadas em arquivo, geralmente usadas com tradutores EDI convencionais.

6
adicionado
Estou recebendo exceção de sintaxe recuperável : com.berryworks.edireader.error.TransactionCountException - erro de contagem de transação no segmento GE. Esperado 1 em vez de 164 no segmento 317, erro de campo 2 ao processar EDI
adicionado o autor Chandana, fonte

Tente usar Smooks . Da página:

Smooks é uma estrutura extensível para criação de aplicativos para processamento de xml e xml não   dados (CSV, EDI , Java, etc) usando Java.

3
adicionado
é possível processar REF * IA * 123456170 * X5T REF * DP * 00017 como elementos em Smooks?
adicionado o autor Chandana, fonte
Eu também usei e era bem sólido. Eu achei a documentação um pouco carente, mas isso foi há anos. Pode ter mudado.
adicionado o autor palto, fonte
Smooks não suporta X12 e o projeto parece estar morto (a última mudança no repositório do Git é de 2011).
adicionado o autor Torben, fonte

Se você está aberto a um produto comercial, dê uma olhada no Transformador de dados de Oakland . Ele é escrito em Java, possui um designer baseado em Eclipse e uma API Java ou integração com Apache Camel, Mule ESB e OSGi Blueprint. Você pode facilmente mapeá-lo graficamente para XML, banco de dados, objetos Java ou outras coisas.

Você precisará entrar em contato com a Oakland Software quando fizer o download para obter as especificações do X12 4010 810, que é o que você está usando.

0
adicionado
É open source?
adicionado o autor RCS, fonte

você pode tentar bots: http://bots.sourceforge.net não é java, mas python. não é uma "biblioteca", mas uma aplicação. alças x12 OK, incl 810. Você pode traduzi-lo para o formato que você precisa (xml, csv, arquivo simples)

0
adicionado

Nós podemos usar o camelo apache, camelo é muito fácil e extensível solução deste,

Isto irá dar um objeto json, depois que nós podemos analisar os objetos json e então obter os valores.

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
adicionado
Por que você usaria json quando pudesse desmarcar diretamente no POJO? Por que não usar o pojo JAXB diretamente, em vez de converter o resultado JAXB em objeto json e, em seguida, convertê-lo novamente em POJO ??? O comprimento que as pessoas vão para evitar o uso de simplesmente JAXB é desconcertante.
adicionado o autor Blessed Geek, fonte