2016-03-03 224 views
1

我能夠讀取使用的Smooks EDI文件(1.5),當它被格式化爲可讀性 -無法讀取EDI文件

ISA*SD*   *DFDF*   *SDFDSF*FHGFH  *44*GHGHGHG  *GHGH*GHGHGH*^*GHGHG*46345345*B*4*:~ 
GS*SS*2323*23232*232323*32323*1*X*FDFGDFGDF~ 
GE*YTRY*DF~ 
IEA*DF*DGHJGHHGG~ 

要閱讀此,我使用的下面配置

<medi:delimiters segment="&#10;" field="*" 
    component="^" sub-component="~" escape="?" /> 

但它失敗了,當我試圖讀取相同的分隔符配置以下EDI(電子數據交換格式化)段

ISA*SD*   *DFDF*   *SDFDSF*FHGFH  *44*GHGHGHG  *GHGH*GHGHGH*^*GHGHG*46345345*B*4*:~GS*SS*2323*23232*232323*32323*1*X*FDFGDFGDF~GE*YTRY*DF~IEA*DF*DGHJGHHGG~ 

她問題是,所有的細分代碼都在同一行。我知道它未能閱讀EDI細分的原因,因爲配置細分=「&#10」,因此失敗。是否有可能讀取這些類型的EDI消息。或者這是不切實際的EDI消息?我相信回車和換行,不需要通過 EDI X12字符standard.i想知道如何閱讀本格式化EDI和如何配置分隔符爲這個未格式化的EDI


+1

段終止符顯然是波浪號(〜)。組件分隔符是冒號。從Liaison下載EDI記事本,這樣你就可以知道你在看什麼。 – Andrew

+0

我檢查了EDI notepad.i中的這些edi消息,可以看到分隔符[段終止符(〜),元素分隔符(*),子元素分隔符(:)和重複字符]。我的問題是,我可以使用什麼字符來配置smooks的分隔符段代碼來閱讀這些類型的EDI消息? – JToddler

+0

細分是代字號。 – Andrew

回答

2

您的ISA部分無效:

  • ISA03具有"DFDF"的值,但不應該長於2個字符
  • ISA05具有"SDFDSF"的值,但應不超過2個字符
  • ISA06的值爲"FHGFH ",長度爲12個字符,但應爲15(包括whitespacE)。
  • ISA08和ISA13也是一個字符太短

這引發了整個段關斷,它從「I」到該段終止子應該是恰好 106個字符(不包括可選的尾隨\r\n) ,但你最終得到108(再次,不包括回車或換行)。 ISA段是唯一具有這些限制的塊 - 如果關閉,解析器將不知道如何解析文件的其餘部分。我懷疑你編輯了你的ISA來嘗試匿名它,但你幾乎可以肯定與你的acutal ISA有相同的問題(或者其中一些) - 檢查第106個字符是什麼,你會發現它是一個\r(或ASCII 10 ),這就是爲什麼Smooks將它作爲你的分段終結者。

+0

丹正是那麼說的。您不必在分析器中定義分隔符,因爲這些分隔符是在ISA段中定義的。唯一可行的方法是如果ISA段使用固定寬度的字段,那麼您必須使它們正確。 – Mufaka