質問

ヘッダーレコードと詳細レコードを持つフラットファイルスキーマがあります。次のようになります:

HDR**2401*XX0062484*22750***20081006000000*000*******
LIN**001*788-0538-001*4891-788538010*20000*EA**0000***

メッセージの最後に2行の空白行を追加する必要があります。現在、複数のレコードがある場合、次の出力が表示されます。

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

これを行うためにカスタムパイプラインコンポーネントを構築できますが、必要なものを取得するより簡単な方法があるかどうか疑問に思っていますか

役に立ちましたか?

解決

フラットファイルスキーマのデリミタプロパティを使用して、目的を達成できるはずです。

サンプルファイルに基づいて、次のレコード構造を持つスキーマを作成しました。

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

スキーマのルートノードをクリックすると、このルートノードのプロパティのリストが表示されます。 1つのプロパティセクションには、ヘッダー「フラットファイル」があります。このフラットファイルセクションで設定できる最初の3つのプロパティは、子区切り文字、子区切り文字タイプ、および子順序です。

ここで、空白行を作成するようにスキーマを構成します(この場合はCR LFですが、必要に応じてさまざまなものを設定できます)。例として、以下を設定します。

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

0x0D 0x0Aはキャリッジリターンラインフィードであるため、上記はルートノードの各子の間に挿入された2つの空白行を作成するだけです。

<!> lt; HDRGroup <!> gt;次に、各ヘッダーとその行が一緒に保持されるように機能します。区切り記号の設定については、次を設定します。

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

<!> lt; HDR <!> gt;および<!> lt; LIN <!> gt;レコードには、アスタリスクで区切られたメッセージ行の実際のスキーマ定義が含まれます。

このスキーマは、私があなたが求めているもののように見えます-この種のフラットファイルスキーマとファイルの解析方法は、改行の種類やファイルの終わりに改行がある場合。

デリミタを使用することの原則はそのままです。設定をいじる必要があるでしょう。

他のヒント

気になっている人のために、私はついにこれを実現するためにカスタムパイプラインコンポーネントを掘り下げて作成しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top