2008-10-21 53 views
2

我有一個包含標題和詳細信息記錄的平面文件架構。它看起來像這樣:將新行添加到BizTalk 2006 R2中的平面文件模式中

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

我可以建立一個自定義管道組件要做到這一點,但我想知道是否有更簡單的方法來獲得我需要的東西?

回答

3

您應該能夠使用平面文件架構的定界符屬性完成您想要的功能。

根據您的示例文件我創建了以下記錄結構的模式:

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

如果您點擊模式的根節點上,你應該看到屬性列表此根節點。一個屬性部分的標題爲'平面文件'。在這個平面文件部分中,您可以設置的前三個屬性是「子定界符」,「子定界符類型」和「子定單」。

這是你配置模式創建的空行(在這種情況下,CR LF但您可以根據需要設置不同的東西),爲了您的例子中,我設置如下:

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

0X0D的0x0A是一個回車換行符,所以上面簡單地創建了兩個空行,它們在根節點的每個子節點之間都被加入。

<然後HDRGroup >的功能是確保每個頭和它的行保持在一起。對於它的分隔符設置我設置:

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

的<HDR>和<LIN>記錄則包含實際的架構定義你的消息行,有星號分隔。

這種模式適用於我看起來像你所要求的東西 - 這種平面文件模式以及它如何解析文件高度依賴於小的細節,但是,例如哪種類型的換行符存在以及文件末尾是否有換行符。

使用分隔符的原則將立場,你可能會發現你需要修改設置。

+0

大衛,我需要做類似的事情。你的解釋適合我。謝謝。 – 2012-02-28 19:34:13

0

對於任何關心的人,我終於放下手腳,寫了一個自定義管道組件來完成這個任務。

相關問題