さまざまなフォーマットのファイルを読み取るために、ノードの「レコードおよびエレメント」タブの「レコードの検出」およびその他のプロパティーを設定します。
以下の例は、
メッセージ・フローの入力としてローカル・ファイルを使用するおよび
リモート FTP または SFTP ディレクトリーでのファイルの読み取りに記載されている例に基づいています。
これらのいずれでも、使用する入力ファイル、プロパティーの設定、および予想結果について説明しています。
以下の例では
FileInput ノードの使用法を説明していますが、これらは
FTEInput ノードにも適用できます。
ただし、以下の条件が付きます。
- FTEInput ノードには「基本」タブがありません。
- ファイルを FTEInput ノードに伝送する際に、FTP と SFTP は使用しません。
以下の例は
FileRead ノードにも適用できます。
ただし、以下の条件が付きます。
- FileRead ノードは、ファイルのレコードを 1 つだけ伝搬します。デフォルトでは、このレコードはファイルの最初のレコードです。 FileRead ノードは、特定のレコードを伝搬するように構成できます。 詳細については、ファイルの内容に基づくメッセージの経路指定および拡充を参照してください。
- ファイルを FileRead ノードに伝送する際に、FTP と SFTP は使用しません。
例 1。レコードは DOS または UNIX の行終了で区切られます。
設定するプロパティーは次のとおりです。
タブ |
プロパティー |
値 |
レコードとエレメント |
レコード検出 |
区切り |
区切り文字 |
DOS または UNIX の行終了 |
区切り文字タイプ |
後置 |
FileInput ノードは、DOS または UNIX の行終了で終了しているレコードを検出して、見つかったそれぞれのレコードごとにメッセージを作成します。
結果として次のような 3 つのメッセージが伝搬されます。
DOS または UNIX の行終了は、伝搬されるどのメッセージの一部にもなりません。
例 2。レコードはカスタム区切り文字で区切られます。
以下の内容を持った
test_input2.xml という名前の入力ファイルを作成します。
<Message>test01</Message>,<Message>test001</Message>,<Message>test0001</Message>
このファイル・データの末尾には、行終了文字を付けないでください。行終了文字を付けても、XMLNSC パーサーによって無視されます。
16 進数 X'2C' は、ASCII のコンマを表します。 他のシステムでは、別の 16 進数コードを使用する必要があります。
FileInput ノードは、コンマ文字を検出すると、それを使用してレコードを区切ります。 「区切り文字タイプ」プロパティーの値は、「中置」であるため、ファイルの末尾にコンマを付ける必要はありません。
結果として次のような 3 つのメッセージが伝搬されます。
- メッセージ 1:
<Message>test01</Message>
- メッセージ 2:
<Message>test001</Message>
- メッセージ 3:
<Message>test0001</Message>
コンマ文字は、伝搬されるどのメッセージの一部にもなりません。 この例では、メッセージ本体にはコンマはありません。メッセージ本体内にコンマがある場合、それぞれの地点でレコードが分割されるので、結果として、誤ったフォームのメッセージがフローの残りに伝搬されることになります。
例 3。レコードは固定数のバイトで区切られます。
以下の内容を持った
test_input3.xml という名前の入力ファイルを作成します。
<Message>123456789</Message><Message>abcdefghi</Message><Message>rstuvwxyz</Message>
このファイルの末尾には、行終了文字を付けないでください。
FileInput ノードは、入力ファイルを分割して、それぞれが 28 バイトの長さの複数のレコードにします。
結果として次のような 3 つのメッセージが伝搬されます。
- メッセージ 1:
<Message>123456789</Message>
- メッセージ 2:
<Message>abcdefghi</Message>
- メッセージ 3:
<Message>rstuvwxyz</Message>
各メッセージは、28 バイトの長さになります。 復帰と改行のペアなどの末尾バイトがこのファイルに付いている場合、そのようなバイトを格納したメッセージがさらに伝搬されます。末尾バイトは、メッセージの解析のために割り当てられているメッセージ・ドメイン、メッセージ・セット、およびメッセージ・タイプによって認識されることも、認識されないこともあります。
例 4。レコードはファイル全体。
以下の内容を持った
test_input4.xml という名前の入力ファイルを作成します。
<Message>Text string of a length decided by you, even including line
terminators, as long as it only contains this tag at the end.</Message>
このファイルの末尾には、行終了文字を付けないでください。付けても、何の効果もありません。
FileInput ノードは、ファイルを分割しません。ファイルのすべての内容が単一のレコードとして伝搬され、このノードで指定されているとおりの、メッセージ・ドメイン、メッセージ・セット、およびメッセージ・タイプによって解析されます。 この例では、XMLNSC パーサーとメッセージ・セット
xml1 を使用するので、メッセージは認識されます。
結果として次のような 1 つのメッセージが伝搬されます。
末尾のバイト (例えば、行終了文字) が含まれています。
例 5. レコードは「メッセージ・ドメイン」プロパティーに指定されているパーサーによって別々のメッセージであると認識されます。
以下の内容を持った
test_input5.xml という名前の入力ファイルを作成します。
<Message>Text string of a length decided by you </Message><Message>and another</Message>
<Message>and another on a new line</Message>
このファイルの末尾または行の末尾に、行終了文字を付けても構いません。
FileInput ノードは、レコードの境界の判別をパーサーに委ねます。 この例では、ドメイン XMLNSC 内のメッセージ・セット
xml1 は、完全な
<Message> XML フォーマットを認識する必要があります。 XMLNSC は、末尾の空白文字 (例えば、行終了文字) を取り込みます。
結果として次のような 3 つのメッセージが伝搬されます。
- メッセージ 1:
<Message>Text string of a length decided by you </Message>
- メッセージ 2:
<Message>and another</Message>
- メッセージ 3:
<Message>and another on a new line</Message>
末尾の空白文字 (例えば、行終了文字) は、メッセージに含まれます。