如何用C#的EdiTools库实现XML转EDI及解析EDI格式
EDI文件格式说明
EDI(电子数据交换)分两大主流标准:ANSI X12(北美常用)和EDIFACT(国际通用)。你代码里的ISA、GS属于ANSI X12标准的控制段,而EDIFACT对应的控制段是UNB、UNG。
X12格式的EDI文件结构层级清晰:
- 交换层(Interchange):整个文件的最外层,由ISA(起始)和IEA(结束)段包裹
- 功能组层(Functional Group):同一业务类型的交易集合,由GS(起始)和GE(结束)段包裹
- 交易集层(Transaction Set):具体的业务数据(比如订单、发票),由ST(起始)和SE(结束)段包裹
- 数据段(Segment):组成交易集的最小逻辑单元,比如BEG(订单抬头)、PO1(订单明细)
ISA、GS段的核心作用
ISA段(Interchange Control Header)
是整个EDI交换的"身份证",必须位于文件最开头,包含的关键信息:
- 交换双方的唯一标识(发送方/接收方ID)
- 交换的日期、时间、唯一控制号(确保每个交换不重复)
- 标准版本(比如00401代表X12 4010版本)
- 传输控制参数(是否需要回执、测试/生产标识)
没有正确的ISA段,接收方系统会直接拒收整个EDI文件。
GS段(Functional Group Header)
用来归类同一业务类型的交易,比如把所有采购订单(代码PO)放在一个组里,关键信息:
- 功能标识代码(PO=采购订单,IN=发票)
- 应用层面的发送/接收方代码(比ISA的更细分,比如具体业务系统ID)
- 组控制号(同一交换内的组唯一)
- 业务标准版本(比如004010对应X12 4010版本)
典型代码解读(EdiTools实现XML转X12)
假设你用的是类似以下的代码:
// 初始化整个EDI交换对象 var interchange = new EdiInterchange(); // 配置ISA交换头部 interchange.IsaSegment = new IsaSegment { InterchangeSenderID = "YOUR_COMPANY_ID", InterchangeReceiverID = "CLIENT_COMPANY_ID", InterchangeDate = DateTime.Now.ToString("yyMMdd"), InterchangeTime = DateTime.Now.ToString("HHmm"), InterchangeControlNumber = "000000001", // 每次递增,不能重复 UsageIndicator = "P" // P=生产环境,T=测试环境 }; // 配置GS功能组头部 var gsSegment = new GsSegment { FunctionalIdentifierCode = "PO", // 采购订单组 ApplicationSenderCode = "YOUR_APP_ID", ApplicationReceiverCode = "CLIENT_APP_ID", GroupControlNumber = "000000001" }; var group = new EdiGroup(gsSegment); interchange.Groups.Add(group); // 从XML加载业务数据并转成交易集 var xmlDoc = XDocument.Load("order.xml"); var transactionSet = EdiTransactionSet.FromXml(xmlDoc, "850"); // 850是X12采购订单交易集代码 group.TransactionSets.Add(transactionSet); // 生成最终EDI字符串 var ediOutput = interchange.ToEdiString();
代码逻辑拆解:
- EdiInterchange:对应整个EDI文件,是所有段的容器
- IsaSegment:配置交换级别的核心控制信息,确保文件能被接收方识别
- GsSegment:定义业务类型分组,让接收方系统快速区分处理不同业务数据
- EdiTransactionSet.FromXml:把XML里的业务数据映射成X12标准的交易集结构
- ToEdiString:把内存中的EDI对象序列化成符合X12格式的文本文件
如果需要转EDIFACT,只需替换控制段为UNB、UNG,交易集用EDIFACT的标准代码(比如ORDERS代表订单)即可,EdiTools同时支持两大标准。
内容的提问来源于stack exchange,提问作者Sourav
相关产品推荐
相关产品推荐

