schema - 将换行符附加到 BizTalk 2006 R2 中的平面文件架构

标签 schema biztalk flat-file biztalk2006r2

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

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 是回车换行符,因此上面只是创建了两个空行,固定在根节点的每个子节点之间。

然后, 的作用是确保每个 header 及其行保持在一起。对于其分隔符设置,我设置:

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

记录包含消息行的实际架构定义,以星号分隔。

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

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

关于schema - 将换行符附加到 BizTalk 2006 R2 中的平面文件架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/223190/

相关文章:

Json 架构 "not in"枚举类型?

xml - 如何使用 emacs nxml 模式使用 xsd 模式验证某些 xml 文件?

sql - 使用外键表约束备份 MySQL 模式

c# - 使用 C# 和 WMI 远程监控 Biztalk 2006 和 2010 服务器

biztalk - 如何确保BTS HL7 ACK Message的消息控制id与原始消息相同

static - BizTalk 外部程序集命名空间和静态方法

excel - 当平面文件中的列和行不匹配时,如何解决(使用)ETL

python - 使用 Marshmallow 的嵌套模式自动字典键解析

c# - 使用 SSIS 使用合并列取消透视数据 excel

xml - 如何创建将分层 XML 转换为平面文件的 Biztalk 映射