【问题标题】:How to define EDI data structure C090如何定义EDI数据结构C090
【发布时间】:2014-06-24 15:08:21
【问题描述】:

我正在尝试创建一个 API,允许我在 C# 中创建和解析 EDI 消息。

作为概念证明并保持简单,我正在尝试编写一个小型类库来创建 C090 数据结构,您可以看到here

我不确定如何为 3286 数据元素创建属性,因为其中有五个。我真的不想为此使用数组或列表,并且想知道是否有任何可能的方法将它们创建为五个属性,但又不使用下划线或数字来混淆它们?

【问题讨论】:

  • 任何复合元素类型都会遇到这种情况。 NAD段中的C080也是同理。您最多可以从源中获取 5 条信息来构成整个元素。根据标准,第一个子元素是强制性的。我不完全确定我理解你想要做什么,但在我看来,你在源端命名它应该不重要(如果你正在创建文档)。基于分隔符解析入站文档更简单。我认为您的问题可以通过一些示例代码来改进。
  • @Andrew 我想你是对的,这可能无关紧要,但我想尝试使属性名称与原始数据元素尽可能接近。我想我会尝试给它们编号,看看情况如何。
  • @mike:编号的缺点是当一个新的子元素添加到复合编号时,其余部分会出错。 (这是一个问题还是它很重要?取决于你的判断。)
  • 您可能会对此有所了解,看看机器人 (bots.sourceforge.net)。在映射脚本中,可以通过调用访问解析的 edi 消息(认为这接近 API?)。类似的逻辑可用于编写 edi 消息。

标签: c# edi


【解决方案1】:

通过使用类属性定义组合的所有元素,我设法找到了一种创建数据结构的方法。

当调用Append(Element) 方法时,它会检查定义以查看Element 是否是组合的一部分,如果不是则抛出异常,否则将被添加到列表中,例如:

C090 c = doc.CreateComposite<C090>();
E3477 e = doc.CreateElement<E3477>();
e.Value = CodesList.E3477.Code001;
c.Append( e );

目前看来效果不错!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 2021-06-09
    • 2013-11-09
    相关资源
    最近更新 更多