34

我以前见过 XML,但我从来没有见过像EDI这样的东西。

如何读取此文件并获取我需要的数据?我看到了 ~、REF、N1、N2、N4 之类的东西,但不知道这些东西是什么意思。

我正在寻找示例和文档。我在哪里可以找到它们?

我发现的 Aslo EDI 指南说它基于“ANSI ASC X12/ver. 4010”。我应该搜索表格 X12 吗?

请帮忙。

4

4 回答 4

85

其中一些其他答案非常好。我会尝试填写一些他们没有提到的东西。

EDI 是一组标准,其中最常见的是:

  • ANSI X12(在美国流行)
  • EDIFACT(在欧洲流行)

听起来您正在查看 X12 版本 4010。这是使用最广泛的(无论如何,根据我的经验)版本。有很多很多不同的版本。

该文件,或正确的“交换”,由段和元素(和有时子元素)组成。每个段都以两个或三个字的标识符(ISA、GS、ST、N1、REF)开头。

所有文档的结构都以信封开头和结尾。信封通常由 ISA 段和 GS 段组成。每个文件可以有多个 GS 段,但每个文件应该只有一个 ISA 段(注意应该,不是每个人都遵守规则)。

ISA是一个特殊的部分。尽管所有其他段都被定界,因此可以具有不同的长度,而 ISA 段具有固定的宽度。这是因为它告诉您如何读取文件的其余部分。

从 ISA 段的最后三个字符开始。这些将告诉您元素分隔符、子元素分隔符和段分隔符。这是一个示例 ISA 行。

ISA:00::00::01:1515151515:01:5151515151:041201:1217:U:00403:000032123:0:P:*~

在这种情况下,“:”是元素分隔符,“*”是子元素分隔符,“~”是段分隔符。如果您只是想查看一个文件以在每个段分隔符 (~) 之后放置换行符,这会容易得多。

ISA 还告诉您文档的来源和来源、版本是什么(00403,也称为 4030)以及交换控制编号(0000321233)。在这个阶段,其他东西对你来说可能并不重要。

该文档来自发件人“01:1515151515”和收件人“01:5151515151”。那么“01:”是怎么回事?好吧,这在 EDI 中引入了一个重要的概念,限定符。有几个元素有限定符,它告诉你下一个元素是什么类型的数据。在这种情况下,01 应该是 Dunn 和 Bradstreet 号码。ISA05 和 ISA07 元素的其他限定符是 12 代表电话号码,ZZ 代表“用户定义”。您会在整个 EDI 细分市场中找到限定符的概念。一个不错的经验法则是,如果它是两个字符,它就是一个限定符。为了了解所有限定词的含义,您需要一份标准指南(来自 EDI 标准机构的硬拷贝或某些软件)。

下一行是 GS。这是一个功能组(一种在交换中将类似文档组合在一起的方法。)例如,您可以在 ISA 中拥有多个采购订单和多个功能确认。这些应放在单独的功能组(GS 段)中。您可以通过查看第一个 GS01 元素来确定 GS 段中的文档类型。

GS:PO:9988776655:1122334455:20041201:1217:128:X:004030

除了文档类型,您还可以再次看到 from (9988776655) 和 to (1122334455)。这次他们使用不同的标识符,这是合法的,因为您可能代表其他人接收交换(例如,如果您是中间人)。您还可以再次看到版本号,这次带有尾随的“0”(0004030)。使用有效数字逻辑去除前导零。为什么这里有一个额外的零而不是 ISA?我不知道。最后,这个 GS 段也有它自己的标识符,128。

这就是信封的开头。之后会有一个以 ST 开头的文档循环。在这种情况下,它们都是具有代码 (850) 的 PO,因此该行将以 ST:850:blablabla 开头

信封内容以引用 GS 标识符 (128) 的 GE 段结尾,因此您知道哪个段正在关闭。然后是一个同样关闭 ISA 的 IEA。

GE:1:128~ 国际能源署:1:000032123~

这是结构的概述以及如何阅读它。要理解它,您需要一本参考书或软件,以便您理解代码、大量时间和大量练习。祝你好运,如果您有更具体的问题,请再次发布。

于 2009-10-22T10:01:58.357 回答
30

哇,倒叙。已经十六年多了……

原则上,每一行都是一个“段”,而行首的标识符是一个段标识符。每个段包含本质上是位置字段的“元素”。它们由“元素分隔符”分隔。

不同的段意味着不同的东西,可以表示循环结构、重复等。

您需要获取当前版本的标准进行基本解析,然后您需要数据字典来描述您正在处理的文档的内容,然后您可能需要行业简介、实施指南或类似的文件来处理使用环境中特定文档类型的约定。

例子?不是最新的,但我相信您可以使用您选择的搜索引擎找到一大堆。一旦你完成了基本的段/元素解析,你就可以处理你的应用程序级别的数据,我不知道一个一般的例子会对你有多大帮助。

于 2009-09-16T05:03:08.023 回答
6

EDI 是结构化文本文件的一种文件格式,被许多大型组织和公司用于标准数据库交换。它往往比 XML 短得多,当数据包必须很小时,XML 曾经很棒。许多组织仍在使用它,因为许多大型机系统使用 EDI 而不是 XML。

使用 EDI 消息,您正在处理与特定格式匹配的文本消息。这类似于 XML 模式,但 EDI 并没有真正的标准化模式语言。EDI 消息本身并不是真正的人类可读的,而大多数规范也不是真正的机器可读的。这基本上是 XML 的优点,其中 XML 和它的模式都可以被人和机器读取。

很有可能,当您通过某些客户端软件(不是基于浏览器的)进行电子银行业务时,您的系统上可能已经有多个 EDI 文件。银行仍然更喜欢 EDI 而不是 XML 来发送交易数据,尽管许多银行还使用他们自己的基于文本的自定义格式。

要了解 EDI,您必须先了解数据,以及要遵循的 EDI 标准。

于 2009-09-16T15:16:40.663 回答
1

Assuming the data stream starts with “ISA”, towards the beginning there should be a section “~ST*” followed by three numeric digits. If you can post these three digits, I can probably provide you with more information. Also, knowing the industry would be helpful. For example, healthcare uses 270, 271, 276, 277 and a few others.

于 2009-09-16T07:33:26.660 回答