gpt4 book ai didi

edifact - 是否有一种非常简单的方法来处理 EDIFACT,例如 D96A?

转载 作者:行者123 更新时间:2023-12-03 22:06:40 25 4
gpt4 key购买 nike

我们是一家使用现代技术(如 XML 接口(interface))的现代公司,但我们的许多客户都希望我们提供 EDIFACT 格式(如 D96A)的电子发票。

不,我们不能使用现有的库,因为它们不是用我们的 Navision 软件使用的 C/AL 编程语言编写的。

因此,为了在 C/AL 中解析它,我需要了解它的规范。但它看起来非常困难和复杂。

那么有人可以给我一个概述如何解释说 D96A 以及如何解析它吗?

最佳答案

解析EDIFACT其实没那么复杂。只需在语法字符处拆分:首先在 '获取段,而不是 +: 处获取该段的数据元素获取各个组件。当然,您需要处理转义的分隔符。这里使用的字符只是默认值,它们可以在消息的开头通过可选的 UNA 段进行更改。实际上是wikipedia article on EDIFACT 对此给出了很好的(但简短的)介绍。格式在 UN's UNECE site 上有详细记录。 (是的,这很多且难以阅读)。

棘手的部分是从中获取信息并进入您的应用程序(并验证它是否有效,更不用说创建好的错误消息了)。如果你真的打算用任何语言从无到有地编写一个完整的解析器,那么:不,没有简单的方法可以做到这一点。也没有任何其他灵活的数据表示。这是一项艰巨的任务,而且永远都是。

但这里有一个想法:如果您对 XML 感兴趣(或者您喜欢称之为的任何其他“现代技术”......)。编写一些将 EDIFACT 消息转换为某种统一的 XML-EDIFACT-Format 的程序将是一项相对容易的任务(这是一件非常可怕的事情,很可能会吓到我)。您可以将每个 EDIFACT 段转换为一个 XML 标记,可能像这样:

ERC+A7V:1:AMD'
IFT+3+NO MORE FLIGHTS'

在 XML 中:
<segment qualifier="ERC">
<element>
<component>A7V</component>
<component>1</component>
<component>AMD<component>
</element>
</segment>
<segment qualifier="IFT">
<element>
<component>3</component>
</element>
<element>
<component>NO MORE FLIGHTS</component>
</element>
</segment>

然后,您可以释放您的 XML 工具和库的力量来验证/评估它。

您还可以更具体地执行此操作,如下所示:
<segment_ERC>
<element>
<component>A7V</component>
<component>1</component>
<component>AMD<component>
</element>
</segment_ERC>
<segment_IFT>
<element>
<component>3</component>
</element>
<element>
<component>NO MORE FLIGHTS</component>
</element>
</segment_IFT>

这可以使通过 XSD 的验证更容易。当然,您可以通过此对话获得尽可能具体的信息,但是您迟早会遇到一个问题,即您需要将有关当前解析的消息结构的信息放入转换器中(因为这并非易事知道哪些段嵌套在其他段中进行分组。不仅有 UNGUNH 等,还有一些你没有直接看到的段组)。

尽管如此,根据您应该作为文档获得的 EDIFACT 手册,您仍必须为收到的消息创建特定的评估程序/模式/任何内容。

关于edifact - 是否有一种非常简单的方法来处理 EDIFACT,例如 D96A?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11295551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com