BizTalk平面文件架构-如何接受LF或CRLF作为行分隔符

BizTalk平面文件架构-如何接受LF或CRLF作为行分隔符,biztalk,flat-file,biztalk-2009,Biztalk,Flat File,Biztalk 2009,我们的客户机向我们发送一个平面文件作为输入,然后我们将其获取并转换为XML文件,然后再发送到目标系统 平面文件由多行组成,每行由LF或CRLF分隔 我如何创建平面文件架构,以便BizTalk能够解释每一行数据,而不管该行是由LF(0x0A)还是CRLF(0x0D 0x0A)分隔的?如果我误解了这个问题,请原谅。。。听起来好像每一行都是一条记录,但有些行以LF结尾,而另一些行以CRLF结尾,您需要将这两行作为同一级别的分隔符吗 我不知道用平面文件模式本身指定多个子分隔符的方法,但一种可能的解决方案

我们的客户机向我们发送一个平面文件作为输入,然后我们将其获取并转换为XML文件,然后再发送到目标系统

平面文件由多行组成,每行由LF或CRLF分隔


我如何创建平面文件架构,以便BizTalk能够解释每一行数据,而不管该行是由LF(0x0A)还是CRLF(0x0D 0x0A)分隔的?

如果我误解了这个问题,请原谅。。。听起来好像每一行都是一条记录,但有些行以LF结尾,而另一些行以CRLF结尾,您需要将这两行作为同一级别的分隔符吗


我不知道用平面文件模式本身指定多个子分隔符的方法,但一种可能的解决方案是为接收管道的解码阶段编写自定义管道组件,用LFs替换CRLFs,然后使用LF作为平面文件模式上的分隔符。

问题已解决。以下是解决方案,以防其他人怀疑:

因为LF和CRLF都共享LF字符,所以我将行分隔符设置为LF(0x0A)。这对于提取完整记录是正确的(当CRLF是分隔符时,其副作用是在末尾有一个额外的CR字符)

可以使用虚拟字段来吸收CR字符或使用贴图来去除额外的CR字符

请注意,由于LF和CRLF分隔符的长度不同(分别为1和2个字符),因此我必须对模式进行更多的更改,以确保正确处理这两个分隔符


在我的场景中,解析的每个行记录都包含8个位置字段,因此在末尾有一个额外的CR字符会导致一个错误,因为Biztalk希望最后一个字段有一定的长度,而该长度不考虑额外的CR字符。解决方案是将第8个字段(在我的例子中是填充字段)的长度增加1。但是,为了仍然能够处理LF行分隔符,请确保将“允许提前终止”标志设置为TRUE。这样,如果最后一个字段比其指定长度少1个字符(如果不包括CR字符),则不会引发错误。

一种简单的方法是在架构级别将LF设置为分隔符,CR设置为填充字符。如果模式在通过VisualStudio进行测试时有效,但在管道中出错,请翻转中缀/后缀值。无需选择“允许提前终止”。

谢谢。您的答案肯定是一个选项,但我想要一种使用模式编辑器而不是自定义解码组件来实现这一点的方法。幸运的是,我发现这毕竟是可能的。谢谢你的帮助。这不意味着你也会接受格式错误的记录吗?