java - 无法读取 EDI 文件

标签 java edi smooks x12

当 EDI 文件经过可读性格式化后,我能够使用 Smooks (1.5) 读取该文件

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 段的原因。它失败是因为配置段 =“ ”。是否可以读取这些类型的 EDI 消息?或者这是不切实际的 EDI 消息?我相信回车符和换行符不是必需的字符 EDI X12 标准。我想知道如何读取此未格式化的 EDI 以及如何为此未格式化的 EDI 配置分隔符


最佳答案

您的 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 将其作为段终止符的原因。

关于java - 无法读取 EDI 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35780645/

相关文章:

java - HQL 从多对多映射中删除关联

java - ETL 工具 : GUIs vs. 框架

C# .NET AS2 通信

c# - 在 C# 中高效的 EDI 解析到数据库

java - 使用 smooks 将 EDI 消息映射到 XML 时遇到问题

csv - 如何在 WSO2 Micro Integrator 中跳过 CSV 文件中的标题

java - 我该如何从 835 EDI 文件中提取数据?

java - 匹配最接近的组,我无法用语言来表达

java - 将两个字符串合并到一个 ArrayList 中

java - 哪里可以下载适用于 Windows 的 jdk 1.4.2