2

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

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

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

4

2 回答 2

3

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

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

<架构>    
  <根>    
    <HDR组>    
      <HDR>    
      <林>    

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

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

子分隔符:0x0D 0x0A 0x0D 0x0A    
子分隔符类型:十六进制    
子订单:中缀

0x0D 0x0A 是一个回车换行,所以上面只是创建了两个空行,在根节点的每个子节点之间插入。

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

子分隔符:0x0D 0x0A    
子分隔符类型:十六进制    
子订单:后缀

然后,<HDR> 和 <LIN> 记录包含消息行的实际架构定义,用星号分隔。

这个模式适用于在我看来就像你所要求的东西 - 这种平面文件模式以及它如何解析文件高度依赖于小细节,但是,例如有什么类型的换行符以及是否有文件末尾的换行符。

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

于 2008-10-22T00:00:29.490 回答
0

对于任何关心的人,我终于屈服并编写了一个自定义管道组件来完成此任务。

于 2008-10-21T22:45:32.870 回答