BizTalk平面文件,多行记录debatching

时间:2012-01-11 15:37:15

标签: biztalk flat-file biztalk2006r2

我试图在其他问题中找到答案,并且没有一个“标准”答案正常工作,所以我希望有人可以指出我已经回答的地方,或者可以告诉我如何这样做。

我有一个包含多个文档的大文件。对于样本,假设这样的

DOCUMENT_IDENTIFIER    123400000000000000000123457   OTHER STUFF HERE
LINE WITH STUFF HERE
LINE WITH STUFF HERE
DOCUMENT_IDENTIFIER    123500000000000000000127456   OTHER STUFF HERE
LINE WITH STUFF HERE
LINE WITH STUFF HERE

现在,我需要保留DOCUMENT_IDENTIFIER行中的所有内容,从第一个0开始到123(或第二个文档中的127)标题行加上它下面的所有LINE WITH STUFF HERE行应该构成一个文档,新文档应该从第二个DOCUMENT_IDENTIFIER行开始。

当我尝试使用标准的Debatching技术时,管道失败:要么完全失败(例如,当我尝试为管道定义标题和主体模式时),要么它永远不会启动第二个文档(如果我只尝试一个身体模式。

我确信这是相当简单的事情,但我完全不知道如何完成它。欢迎提出任何建议/指示。

如果重要的话,我现在停留在BT2006 R2上。

1 个答案:

答案 0 :(得分:0)

你的身体架构是什么样的?我会开始做到这一点,并确保你有一些东西,将创建xml与所有“DOCUMENT_IDENTIFIER 1234”记录的单独记录。

我会使用“DOCUMENT_IDENTIFIER”1234位作为标记标识符,然后我将标记偏移设置为4,以避免前4个字符。

你应该有一个

RecordForDocumentIdentifiers(模式的根)组Maxoccurs = *       RecordForDocumentIdentifier(在此处设置标记标识符)                 要解析的列的字段

  RecordForOtherLines   Group Maxoccurs=*
           RecordForOtherLine   Maxoccurs=* or whatever your rules are.   
                   Fields for the columns of other lines

当这似乎解析你的例子没问题,并生成你想要的XML时,我会从那里开始创建我的标题和正文模式。我知道这是两个步骤,但它需要一些猜测。

我猜Header模式将从RecordDocumentIdentifier中选取,而body将是RecordForOtherLines(其外部记录)。

我希望有所帮助。如果没有,请发布您的实际文件和架构,让我们看看它。