我有一个包含标题和详细记录的平面文件架构。它看起来像这样:
HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***
我需要在消息末尾附加两个空行。现在,如果我有多个记录,我会得到以下输出:
HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***
HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***
我希望看到发生的是这样的事情:
HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***
HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***
我可以构建一个自定义管道组件来执行此操作,但我想知道是否有更简单的方法来获取我需要的内容?
最佳答案
您应该能够通过使用平面文件架构的 Delimiter 属性来完成您想要的任务。
根据您的示例文件,我创建了一个具有以下记录结构的架构:
<Schema> <Root> <HDRGroup> <HDR> <LIN>
如果单击架构的根节点,您应该会看到该根节点的属性列表。一个属性部分具有标题“平面文件”。在此平面文件部分中,您可以设置的前三个属性是“子分隔符”、“子分隔符类型”和“子顺序”。
您可以在此处配置架构以创建空行(在本例中为 CR LF,但您可以根据需要设置不同的内容)对于您的示例,我设置以下内容:
Child Delimiter: 0x0D 0x0A 0x0D 0x0A Child Delimiter Type: Hexadecimal Child Order: Infix
0x0D 0x0A 是回车换行符,因此上面只是创建了两个空行,固定在根节点的每个子节点之间。
然后,
Child Delimiter: 0x0D 0x0A Child Delimiter Type: Hexadecimal Child Order: Postfix
此模式适用于在我看来就像您所要求的东西 - 这种平面文件模式及其解析文件的方式高度依赖于小细节,例如有什么类型的换行符以及如果文件末尾有换行符。
使用分隔符的原则仍然有效,您可能会发现需要修改设置。
关于schema - 将换行符附加到 BizTalk 2006 R2 中的平面文件架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/223190/