JavaEDIX12解析器

JavaEDIX12解析器,java,parsing,edi,x12,Java,Parsing,Edi,X12,Java中有好的EDI解析器API吗?我知道这已经发生了,我已经经历过了 我有一个ANSI X12 EDI文件。这是一份846库存查询文件: ISA*00* *00* *01*038211983 *ZZ*JWN-DSD *130715*1540*U*00401*000015956*0*P*} GS*IB*038211983*JWN-DSD*20130715*1540*15956*X*004010VICS ST*846*159560001

Java中有好的EDI解析器API吗?我知道这已经发生了,我已经经历过了

我有一个ANSI X12 EDI文件。这是一份846库存查询文件:

ISA*00*          *00*          *01*038211983      *ZZ*JWN-DSD        *130715*1540*U*00401*000015956*0*P*}
GS*IB*038211983*JWN-DSD*20130715*1540*15956*X*004010VICS
ST*846*159560001
BIA*00*MM*9480*20130715
REF*IA*103799
LIN**UP*887873083091
QTY*33*12*EA
LIN**UP*887873083107
QTY*33*13*EA
LIN**UP*887873083114
QTY*33*10*EA
LIN**UP*887873083121
QTY*33*6*EA
LIN**UP*887873083138
QTY*33*0*EA
SCH*0*EA***018*20391231

// Many lines this

LIN**UP*886732476371
QTY*33*0*EA
SCH*0*EA***018*20391231
LIN**UP*886732476388
QTY*33*0*EA
SCH*0*EA***018*20391231
SE*3283*159560001
GE*1*15956
IEA*1*000015956
通过上面提到的链接,我将jar添加到Java程序中。当我给出上述文件时,输出XML如下

<ediroot xmlns="http://www.berryworkssoftware.com/2008/edireader">
<interchange Standard="ANSI X.12" Date="130715" Time="1540" StandardsId="U" Version="00401" Control="000015956">
<sender>
<address Id="038211983 " Qual="01"/>
</sender>
<receiver>
<address Id="JWN-DSD " Qual="ZZ"/>
</receiver>
<group GroupType="IB" ApplSender="038211983" ApplReceiver="JWN-DSD" Date="20130715" Time="1540" Control="15956" StandardCode="X" StandardVersion="004010VICS">
<transaction DocType="846" Control="159560001">
<segment Id="BIA">
<element Id="BIA01">00</element>
<element Id="BIA02">MM</element>
<element Id="BIA03">9480</element>
<element Id="BIA04">20130715</element>
</segment>
<segment Id="REF">
<element Id="REF01">IA</element>
<element Id="REF02">103799</element>
</segment>
<segment Id="LIN">
<element Id="LIN02">UP</element>
<element Id="LIN03">887873083091</element>
</segment>
<segment Id="QTY">
<element Id="QTY01">33</element>
<element Id="QTY02">12</element>
<element Id="QTY03">EA</element>
</segment>
<segment Id="LIN">
<element Id="LIN02">UP</element>
<element Id="LIN03">887873083107</element>
</segment>
<segment Id="QTY">
<element Id="QTY01">33</element>
<element Id="QTY02">13</element>
<element Id="QTY03">EA</element>
</segment>
<segment Id="LIN">
<element Id="LIN02">UP</element>
<element Id="LIN03">887873083114</element>
</segment>
<segment Id="QTY">
<element Id="QTY01">33</element>
<element Id="QTY02">10</element>
<element Id="QTY03">EA</element>
</segment>
<segment Id="LIN">
<element Id="LIN02">UP</element>
<element Id="LIN03">887873083121</element>
</segment>
<segment Id="QTY">
<element Id="QTY01">33</element>
<element Id="QTY02">6</element>
<element Id="QTY03">EA</element>
</segment>
<segment Id="LIN">
<element Id="LIN02">UP</element>
<element Id="LIN03">887873083138</element>
</segment>
<segment Id="QTY">
<element Id="QTY01">33</element>
<element Id="QTY02">0</element>
<element Id="QTY03">EA</element>
</segment>
<segment Id="SCH">
<element Id="SCH01">0</element>
<element Id="SCH02">EA</element>
<element Id="SCH05">018</element>
<element Id="SCH06">20391231</element>

//Many lines

</segment>
</transaction>
</group>
</interchange>
</ediroot>

我想他不能阅读X12。我觉得没用。它需要有一些用于读取文件的配置文件。因此,对于x12文件的每种类型,我需要不同的配置


那么,有什么好的Java EDI X12解析器API吗?

您的示例文件是X12。这是一份库存查询/建议文件。Smooks的问题在于,在示例中,它既不是X12也不是EDIFACT,而是一个专有平面文件。我不希望有人对此有任何头绪。为什么不研究一下MapForce()之类的东西呢?这里的每个人都想重新发明轮子,不给范式带来任何新东西。EDI到XML的翻译已经被打死了。我该如何使用它?我在哪里可以下载该API?我发现只有试用版的MapForce是商业软件。您可以使用他们的映射实用程序生成一个映射,它会抛出Java代码嵌入到您的应用程序中。我认为您使用术语API不正确,只需要编写自己的文本解析器。当然,这也有它自己的一系列问题——997生成、可伸缩性、处理不同的分隔符集。这就是为什么所有这些独立的EDI转换器都存在的原因。然而,人们被迫重新发明已有30年历史的轮子。那么,如果我有相同
存货
类型的不同edi文件呢?自动生成的Java代码能够读取所有这些文件吗?或者它会只读取我们第一次上传的文件吗?846份文件可能(也可能)会因贸易伙伴而异。您当然可以在映射工具中创建一个通用映射来处理基于合作伙伴的条件,也可以为每个合作伙伴创建一个映射来处理每个特定文档。在任何EDI环境中,这都是我们通常必须做出的选择。这是一种权衡。构建通用映射以处理所有合作伙伴需求会增加映射的复杂性。每个合作伙伴拥有一张地图将增加您的代码库。