0

.Net 世界中是否有类似于 Apache Cammel: Bindy 的东西?我试图避免写类似的东西,但我可能别无选择。因为我正在处理中等复杂的平面文件(实际上是 MQ 消息),所以即使 bindy 也不完全适合我,而且我不相信 bindy 有鉴别器的概念。

我正在处理的消息由 \n 分隔的 80 个字符 ascii 记录组成。第一个位置包含一个记录类型 id,对于实际数据记录,第二个位置是一个子类型 id。消息是分层的,因为它包含消息头、批次头、数据记录、批次尾、消息尾。

一个简单的例子:

Axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
BxxxxxxxxxJIxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
J1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
J1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
J1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
YxxxxxxxxxJI00003xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Zxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

...其中 A 是消息头,B 是批处理头 - 包含类型提示,J1 是数据记录,Y 是包含相同类型提示和记录计数的批处理尾部,Z 是消息尾部.

一个更复杂的例子:

Axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
BxxxxxxxxxASxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
T1xxxxaaa00000000 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
T1xxxxbbb11111111 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
T3xxxxbbb11111111 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
T1xxxxccc22222222 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
T2xxxxccc22222222 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
T3xxxxccc22222222 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
YxxxxxxxxxAS000006xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Zxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

...其中通过记录键相关的子类型数量不定。

总之,我要处理大约 25 种不同的类型/子类型。从业务角度来看,简单示例始终表示单个项目数组,其中每个 J1 将保存 4。在更复杂的示例中,T1、T2、... Tx 表示键相关的单个实体,并且消息可能包含多个实体.

大约四年前,我编写了一个小型 jscript 应用程序来将所有这些解析为 XML。该解析器依赖于一大堆定义每个类型/子类型布局的 CSV 文件,以及另一个定义如何遍历层次结构的集合。现在需要使这种双向的并可用于实时应用程序。

编辑:

顺便说一句,我无法控制消息格式。它由美国政府定义。这是一个 B2B 接口,我只是一个消费者。

4

0 回答 0