BizTalk EDI转XML时ISA等Header段未转换的技术问询
BizTalk EDI转XML:ISA/GS Header段未生成XML的解决办法
问题详情
我搭建了一个BizTalk项目,用来把EDI文件转成XML。目前交易段(比如ST、BEG这些)都能正常转成XML,但ISA、GS这类Header段没被转换。我还没做任何映射,只需要把这些Header段转成XML,哪怕生成单独的XML文件也行。
BizTalk配置截图说明
- 截图1:EDI接收管道配置界面
- 截图2:EDI Disassembler属性设置界面
- 截图3:X12协议配置界面
待转换的EDI Payload
ISA*00* *00* *16*SENDER1 *ZZ*RECEIVER1 *071216*1406*U*00204*000000263*1*T*>~ GS*IN*SENDER1*RECEIVER1*20071216*1406*000000001*X*004010~ ST*850*0001~ BEG*00*SA*XX-1234**20170301**NA~ PER*BD*ED SMITH*TE*8001234567~ TAX*53247765*SP*CA*********9~ N1*BY*ABC AEROSPACE*9*1234567890101~ N2*AIRCRAFT DIVISION~ N3*2000 JET BLVD~ N4*FIGHTER TOWN*CA*98898~ PO1*1*25*EA*36*PE*MG*XYZ-1234~ MEA*WT*WT*10*OZ~ IT8*******B0~ SCH*25*EA***106*20170615~ CTT*1~ AMT*TT*900~ SE*15*0001~ GE*1*000000001~ IEA*1*000000263~
解决方案
方法1:启用EDI Disassembler的Header保留选项
- 打开项目中的接收管道,找到EDI Disassembler组件
- 进入X12 Disassembler属性页,勾选
Preserve Interchange Header和Preserve Group Header - 重新部署项目并测试,生成的XML中会自动包含
<InterchangeHeader>(对应ISA段)和<GroupHeader>(对应GS段)节点
方法2:生成单独的Header XML文件
如果需要把Header单独输出成XML文件,可通过以下步骤实现:
- 创建自定义管道组件,在EDI拆分完成后,从消息上下文提取ISA/GS的完整字段信息
- 将提取到的Header数据序列化为XML格式,通过单独的发送端口输出
- 或者在Party的X12协议配置中,启用
Split Interchange per Transaction Set,同时配置Header的独立输出规则
方法3:从上下文属性提取Header字段组装XML
若不需要完整的Header XML,仅需获取字段再自行组装:
- ISA段的各个字段对应上下文属性:
http://schemas.microsoft.com/BizTalk/2003/edi-properties#ISA01、http://schemas.microsoft.com/BizTalk/2003/edi-properties#ISA02等 - GS段的各个字段对应上下文属性:
http://schemas.microsoft.com/BizTalk/2003/edi-properties#GS01、http://schemas.microsoft.com/BizTalk/2003/edi-properties#GS02等
可在业务流程(Orchestration)或管道中读取这些属性,再拼接成所需的XML结构
内容的提问来源于stack exchange,提问作者Hardik
相关产品推荐
相关产品推荐

