2

当格式化为可读性时,我可以使用 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 标准不需要回车和换行符。我想知道如何阅读此未格式化的 EDI 以及如何为此未格式化的 EDI 配置分隔符


4

1 回答 1

5

您的 ISA 段无效:

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

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

于 2016-03-14T15:08:28.607 回答