2016-03-03 182 views
1

我能够读取使用的Smooks EDI文件(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(电子数据交换格式化)段

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

段终止符显然是波浪号(〜)。组件分隔符是冒号。从Liaison下载EDI记事本,这样你就可以知道你在看什么。 – Andrew

+0

我检查了EDI notepad.i中的这些edi消息,可以看到分隔符[段终止符(〜),元素分隔符(*),子元素分隔符(:)和重复字符]。我的问题是,我可以使用什么字符来配置smooks的分隔符段代码来阅读这些类型的EDI消息? – JToddler

+0

细分是代字号。 – Andrew

回答

2

您的ISA部分无效:

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

这引发了整个段关断,它从“I”到该段终止子应该是恰好 106个字符(不包括可选的尾随\r\n) ,但你最终得到108(再次,不包括回车或换行)。 ISA段是唯一具有这些限制的块 - 如果关闭,解析器将不知道如何解析文件的其余部分。我怀疑你编辑了你的ISA来尝试匿名它,但你几乎可以肯定与你的acutal ISA有相同的问题(或者其中一些) - 检查第106个字符是什么,你会发现它是一个\r(或ASCII 10 ),这就是为什么Smooks将它作为你的分段终结者。

+0

丹正是那么说的。您不必在分析器中定义分隔符,因为这些分隔符是在ISA段中定义的。唯一可行的方法是如果ISA段使用固定宽度的字段,那么您必须使它们正确。 – Mufaka