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

发布于 2024-07-07 20:21:04 字数 791 浏览 15 评论 0原文

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

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

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

I have a flat-file schema that has a header and detail records. It looks something like this:

HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***

I need to append two blank lines at the end of the message. Right now, if I have multiple records I get the following output:

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

What I want to see happen is something like this:

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

I could build a custom pipeline component to do this, but I'm wondering if there is a simpler way of getting what I need?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

赤濁 2024-07-14 20:21:04

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

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

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

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

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

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

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

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

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

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

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

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

You should be able to accomplish what you want by using the Delimiter properties of the flat file schema.

Based on your example file I created a schema with the following record structure:

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

If you click on the root node of your schema you should see a list of properties for this root node. One properties section has the header 'Flat File'. In this flat file section the first three properties you can set are Child Delimiter, Child Delimiter Type and Child Order.

This is where you configure the schema to create the blank lines (in this case CR LF but you can set different things as you need) For your example I set the following:

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

0x0D 0x0A is a carriage return line feed, so the above simply creates two blank lines, infixed between each child of the root node.

The <HDRGroup> then functions to make sure that each header and its lines is kept together. For its delimiter settings I set:

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

The <HDR> and <LIN> records then contain the actual schema definition for your message lines, delimited with an asterisk.

This schema works for something that looks to me like what you have asked for - this sort of flatfile schema and how it parses a file is highly dependant of the little details, however, such as what type of line breaks there are and if there are line breaks at the end of the file.

The princples of using the delimiters will stand, you will likely find you need to tinker with the settings.

是你 2024-07-14 20:21:04

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

For anybody who cares, I finally caved in and wrote a custom pipeline component to accomplish this.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文