我有一个包含标题和详细记录的平面文件架构。它看起来像这样:

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***

我可以构建一个自定义管道组件来执行此操作,但我想知道是否有更简单的方法来获取我需要的东西?

有帮助吗?

解决方案

您应该能够通过使用平面文件架构的分隔符属性来完成您想要的任务。

根据您的示例文件,我创建了一个具有以下记录结构的模式:

<Schema>    
  <Root>    
    <HDRGroup>    
      <HDR>    
      <LIN>    

如果单击架构的根节点,您应该会看到此根节点的属性列表。一个属性部分的标题为“平面文件”。在此平面文件部分中,您可以设置的前三个属性是子分隔符,子分隔符类型和子顺序。

这是您配置架构以创建空行的位置(在本例中为CR LF,但您可以根据需要设置不同的内容)对于您的示例,我设置以下内容:

Child Delimiter: 0x0D 0x0A 0x0D 0x0A    
Child Delimiter Type: Hexadecimal    
Child Order: Infix

0x0D 0x0A是一个回车换行符,因此上面只创建两个空行,在根节点的每个子节点之间加入。

<!> lt; HDRGroup <!> gt;然后用于确保每个标题及其行保持在一起。对于我设置的分隔符设置:

Child Delimiter: 0x0D 0x0A    
Child Delimiter Type: Hexadecimal    
Child Order: Postfix

<!> lt; HDR <!> gt;和<!> lt; LIN <!> gt;然后,记录包含消息行的实际模式定义,并用星号分隔。

这个模式适用于那些看起来像你所要求的东西 - 这种flatfile模式以及它如何解析文件高度依赖于细节,但是,例如什么类型的换行符和如果文件末尾有换行符。

使用分隔符的原则将有效,您可能会发现需要修改设置。

其他提示

对于任何关心的人,我终于屈服了并编写了一个自定义管道组件来实现这一目标。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top