我是EDI的新手,我有一个问题.
我已经读过,通过查看ISA行的最后3个字符,您可以获得有关EDI格式的大部分内容.如果每个EDI都使用换行符来分隔实体,这很好,但我发现很多都是单行文件,其中任意数量的字符用作中断.我注意到我解析的每个EDI中的最后一个字符都是break字符.我看了几百个,发现没有例外.如果我第一次抓住那个角色,并使用它来获得ISA线的最后3个,我是否应该合理地期望我能够解析来自EDI的数据?
我不知道这是否有帮助,但EDI'类型'往往是850,875.我不确定这是否是标准,但值得一提.
Don*_*son 14
edi的交易类型并不重要(850 = order,875 = grocery po).写了几个edi解析器,这里有一些我发现的东西:
你应该能够指望ISA(和仅ISA)是固定宽度(如果内存服务,则为105个字符).去掉前105个字符.之后和第一次出现"GS"之前的所有内容都是你的行终止符(这可以是任何东西,包括一个0x07 - 嘟嘟声 - 所以请注意,如果你输出到stdout进行调试,或者你可能会发出一连串的哔哔声在演讲者之外).通常这是1或2个字符,有时它可以更多(如果发送数据的人由于某种原因添加额外的终止符).一旦有了行终止符,就可以得到段(字段)分隔符.我通常会拉出GS线的3个字符并使用它,尽管ISA线的第4个字符也可以正常工作.
还要注意,你可以获得一个包含多个ISA的文件.在这种情况下,您不能指望每个ISA内的行或字段分隔符是相同的.
另一件事......也可能(再次,不确定它的规格)edi文件是否具有可变长度ISA.这是非常罕见的,但我必须适应它.如果发生这种情况,您必须将该行解析为其字段.ISA中的最后一个字段只有一个字符长,因此您可以从中确定ISA的实际长度.如果是我,我不会担心这个,除非你看到这样的文件.这是一种罕见的现象.
我上面所说的可能不是"规范"的字母......也就是说,我不确定在同一个文件中有不同的行分隔符是合法的,但在不同的ISA中,但它在技术上是可能的我容纳它,因为我必须处理以这种方式出现的文件.edi处理器我每天使用超过5000个可能的数据来源处理超过5000个文件(所以我看到很多奇怪的东西).
最好的问候,不要