2010-04-22 45 views

回答

6

問題已解決。這是解決方案,以防其他人想知道:

由於LF和CRLF都共享LF字符,因此我將行分隔符設置爲LF(0x0A)。這適用於提取完整記錄(當CRLF是分隔符時,在結尾處有一個額外的CR字符的副作用)。

可以使用虛擬字段來吸收CR字符或使用地圖來消除額外的CR字符。

請注意,由於LF和CRLF分隔符具有不同的長度(分別爲1和2個字符),因此我必須對模式做一些更改以確保正確處理兩者。

在我的方案中,每個已解析的行記錄都包含8個位置字段,因此在末尾有一個額外的CR字符會導致錯誤,這是由於Biztalk預計最後一個字段沒有考慮額外的一定長度CR字符。解決方法是將第8個字段(在我的例子中是填充字段)的長度增加1.但是,爲了仍然能夠處理LF行分隔符,請確保將「允許提前終止」設置爲標誌爲TRUE。這樣,如果最後一個字段的長度小於1個字符(如果不包含CR字符),則不會引發錯誤。

+0

這不是說您會接受格式錯誤的記錄嗎? – 2010-08-27 17:25:58

4

請原諒我,如果我誤解了這個問題......聽起來好像每一行都是一條記錄,但有些行以LF和其他的CRLF結尾,並且您需要將這兩行作爲分隔符在同一級別?

我不知道如何使用平面文件模式自己指定多個子分隔符,但一種可能的解決方案可能是爲接收管線的解碼階段編寫自定義管線組件,以替換使用LF的CRLF,然後在平面文件模式中使用LF作爲分隔符。

+0

謝謝BiztalkMama。您的答案絕對是一種選擇,但我想要一種使用模式編輯器而不是自定義解碼組件的方法。幸運的是,我發現畢竟是有可能的。雖然我感謝你的幫助。 – FullOfQuestions 2010-04-22 18:43:54

相關問題