无法读取EDI文件

时间:2016-03-03 18:56:36

标签: java edi smooks x12

我可以在格式化为可读性时使用Smooks(1.5)读取EDI文件

ISA*SD*          *DFDF*          *SDFDSF*FHGFH       *44*GHGHGHG       *GHGH*GHGHGH*^*GHGHG*46345345*B*4*:~ 
GS*SS*2323*23232*232323*32323*1*X*FDFGDFGDF~
GE*YTRY*DF~ 
IEA*DF*DGHJGHHGG~

为了阅读本文,我使用了以下配置

<medi:delimiters segment="&#10;" field="*" 
    component="^" sub-component="~" escape="?" />

但是当我尝试使用相同的分隔符配置读取下面的EDI(无格式EDI)段时,它失败了

ISA*SD*          *DFDF*          *SDFDSF*FHGFH       *44*GHGHGHG       *GHGH*GHGHGH*^*GHGHG*46345345*B*4*:~GS*SS*2323*23232*232323*32323*1*X*FDFGDFGDF~GE*YTRY*DF~IEA*DF*DGHJGHHGG~

这里的问题是,所有段代码都在同一行。我知道它无法读取EDI段的原因。由于配置段=“&#10”,它失败了。是否可以读取这些类型的EDI消息。或者这是不切实际的EDI消息?我相信回车和换行不是必需的字符 EDI X12 standard.i想知道如何阅读这个未格式化的EDI以及如何为这个未格式化的EDI配置分隔符

1 个答案:

答案 0 :(得分:3)

您的ISA细分无效:

  • ISA03的值为"DFDF",但不应超过2个字符
  • ISA05的值为"SDFDSF",但不应超过2个字符
  • ISA06的值为"FHGFH ",长度为12个字符,但应为15(包括whitespacE)。
  • ISA08和ISA13也是一个字符太短

这会引起整个片段的关闭,这是从&#34; I&#34;段终止符应该完全 106个字符(不包括可选的尾随\r\n),但最终得到108(同样,不包括回车符或换行符)。 ISA段是唯一具有这些限制的段 - 如果它关闭,解析器不知道如何解析文件的其余部分。我怀疑你编辑了你的ISA以试图对它进行匿名化,但你几乎肯定会遇到与你的实际ISA相同的问题(或者其中一些) - 检查第106个字符是什么,你会发现它是什么#a sa \r(或ASCII 10),这就是为什么Smooks将其作为您的段终止符。