2011-02-16 15 views
1

我有一個平面文件,其中有一些重複部分,我很困惑如何通過BT平面文件映射向導創建模式。該文件如下所示:如何將BizTalk平面文件映射向導用於嵌套重複項目?

001,bunch of data 
002,bunch of data 
006,bunch of data 
006A,bunch of data 
006B,bunch of data 
006B,bunch of data 
006,bunch of data 
006A,bunch of data 
006B,bunch of data 

正如您所看到的,006 *記錄可以重複。我將要與XML,看起來像這樣拉閘:

<001Stuff>...</001Stuff> 
<002Stuff>...</002Stuff> 
<006Loop> 
    <006Stuff>...</006Stuff> 
    <006AStuff>...</006AStuff> 
    <006BStuff>...</006BStuff> 
    <006BStuff>...</006BStuff> 
</006Loop> 
<006Loop> 
    <006Stuff>...</006Stuff> 
    <006AStuff>...</006AStuff> 
    <006BStuff>...</006BStuff> 
</006Loop> 

很明顯,我不能只設置的006 *記錄的第一批「重複記錄」,而忽略第二組。我習慣通過嚮導處理單個重複行(即在第一行之後的另一個006行),而不是嵌套這樣的事情 - 關於如何繼續的任何建議?謝謝!

回答

2

使用平面文件架構嚮導非常困難,只有這麼多它可以幫助你。我似乎總是需要調整一下它的輸出。

爲了使事情變得容易一點,我建議你應該限制你的示例文檔出現在整個<006>結構中。您將不必使用平面文件架構嚮導多條線路設置爲Ignored

001,bunch of data 
002,bunch of data 
006,bunch of data 
006A,bunch of data 
006B,bunch of data 
006B,bunch of data 

接下來,每個重複結構應有相應的記錄重複裏面XML模式定義包裹。

請注意,您可以始終在嵌套結構上遞歸運行平面文件架構嚮導以進行更細粒度的控制。所以我建議,首先,運行與一個包羅萬象的重複<006>結構,像這樣的嚮導:

enter image description here

然後,您可以用鼠標右鍵單擊結構,並提供嵌套一個更詳細的定義子結構,只有突出的樣本內容的子集,像這樣:

enter image description here

然後,最重要的部分:你需要調整Child Order PR對於這兩個重複結構,因爲在文檔文件的末尾只有一個空行,並且嚮導無法幫助您處理這種情況,因此請將其設置爲Conditional Default

僅供參考,您的最終結構應該像這樣:

enter image description here

以下設置:

  • BunchOfStuff (Root):分隔,0x0D 0x0A,後綴。
  • _001Stuff:分隔的,,,前綴,標籤標識符001
  • _002Stuff:分隔的,,,前綴,標籤標識002
  • _006Loop:分隔,0x0D 0x0A,有條件的默認
  • _006Stuff:分隔的,,,前綴,標籤標識006
  • _006AStuff:分隔的,,,前綴,標籤標識符006A
  • _006BLoop:分隔,0x0D 0x0A,有條件的默認
  • _006BStuff:分隔,,,前綴,標籤標識006B

希望這會有所幫助。

0

處理從第一個006開始的第一個記錄到第二個006開始記錄的所有內容。當您定義006記錄時,也將其設置爲重複記錄。這應該爲每個660,每個600下的組和節點創建一個節點。

這就是我想要的。

這是我在2分鐘工作後的輸出。除了節點/元素名稱,我認爲這是你想要的。您仍然需要爲數據中的每個字段創建單獨的元素。

< _x0030_01的xmlns = 「」> 001,束數據 < _x0030_02的xmlns =的 「」> 002,束數據 < _x0030_06的xmlns = 「」> < _x0030_06_Child1>一串數據的 < _x0030_06_Child2> 的< _x0030_06_Child2_Child1> A,一串數據的 < _x0030_06_Child2> < _x0030_06_Child2_Child1> B,一串數據 的 < _x0030_06_Child2> < _x0030_06_Child2_Child1> B,一串數據 < _x0030_06的xmlns = 「」> < _x0030_06_Child1>一串數據 <的_x0030_06_Child2> < _x0030_06_Child2_Child1> A,一串數據的 < _x0030_06_Child2> < _x0030_06_Child2_Child1> B,一束的數據