解析EDIFACT可能是一项艰巨的任务.有没有好的开源库可以提供帮助?
我们需要为客户端处理一些EDI消息,我想知道是否有人可以推荐一些可以完成任务的组件(不一定是免费的).我对能够将EDI消息解析为.NET结构和某种传输协议(SMTP,FTP,HTTP,AS2)等实现的框架感兴趣.
我们是一家使用现代技术(如XML接口)的现代化公司,但我们的许多客户都想要我们的电子发票,例如D96A等EDIFACT格式.
不,我们不能使用现有的库,因为它们不是用我们的Navision软件使用的C/AL编程语言编写的.
因此,为了在C/AL中解析它,我需要了解它的规范.但它看起来非常困难和复杂.
那么有人可以给我一个概述如何解释说D96A以及如何解析它?
是否有人创建了读取和解析 EDI 文件的 .NET 应用程序?
EDI 文件 - 航运业用于提供有关装运发票的信息。
我刚开始阅读EDI FACT消息.刚刚理解释放字符(?).
从谷歌得到这个定义
This is a single character, which overrides the meaning of the next character, allowing a separator character to appear within a data element. The character can be a hexadecimal value. It applies to EDIFACT only.
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我理解这一点吗?
谢谢
我正在寻找EDIFACT和X12中至少一个显示二进制机箱的示例文件.
EDIFACT应包括UNO/UNP段中包含的数据,X12需要使用二进制段BIN或BDS之一.
感谢您的任何帮助,您可以提供.
如果字符串前面没有问号,我怎么能写一个正则表达式模式来按特定的分隔符分割字符串?
我编写了一个解析器,将EDIFACT消息拆分为段,复合和元素.但在EDI标准中,问号是逃避字符.所以要拆分这个字符串:
'PRI+2.005:1+9022.5'RAD+RRHANB97+120814'
Run Code Online (Sandbox Code Playgroud)
我可以使用string.Split( '\' '),然后string.split(' + '),然后string.split(':'),以获得PRI,2.005,1,9022.5等等.然而,这些字符被问号逃脱:
'PRI+2.005?+3.2:1+9022.5'RAD?'R+RRHANB97+120814'
Run Code Online (Sandbox Code Playgroud)
现在应该是PRI,2.005 + 3.2,1,9022.5,RAD'R,RRHANB97.
有人可以帮助正则表达式匹配'而不是?'?
谢谢
我正在编写一个正则表达式,它将从EDIFACT UN代码列表中提取各种信息.因为有成千上万的代码我不想全部输入,所以我决定使用正则表达式解析文本文件并提取出我需要的位.文本文件的结构使我能够轻松识别出我想要的位.
我使用Regex Hero创建了以下Regex 来测试它,但是我无法让它匹配codeComment组的双重换行符.我已经尝试使用字符类[^ \n \n],但这仍然不匹配双换行符.
注意:我在Regex Hero上选择了Multiline选项.
(?<element>\d+)\s\s(?<elementName>.*)\[[B|C|I]\]\s+Desc: (?<desc>[^\n]*\s*[^\n]*)
^\s*Repr: (?<type>a(?:n)?)..(?<length>\d+)
^\s*(?<code>\d+)\s*(?<codeName>[^\n]*)
^\s{14}(?<codeComment>[^\n]*)
Run Code Online (Sandbox Code Playgroud)
这是我用来匹配的示例文本.
-------------------------------------------------- --------------------
1073文档行代码[B]
描述:指示与
文档行关联的操作的代码
.
Repr:an..3
1包含在凭证/交易中
凭证行包含在
凭证/交易中.
也应该抓住这个.
2从文档/事务
中排除文档行不包括在
文档/事务中.
我想要的是codeComment包含以下内容:
The document line is included in the
document/transaction.
should capture this as well.
Run Code Online (Sandbox Code Playgroud)
但它只提取第一行:
The document line is included in the
Run Code Online (Sandbox Code Playgroud)