このサンプルはサンプル 6 を基に作成したものであり、ストリング・フィールドを引用符で囲むことによる、CSV スタイルのエスケープのより包括的なサポートを追加したものです。 これは、引用符のあるフィールドまたは引用符のないフィールドを解析すること、および引用符で囲んだフィールドのデータの中でコンマを使用することをサポートします。 このサンプルでは引用符をメタデータの一部として処理するので、データが解析されるときには引用符が除去され、このモデルを 使用して CSV メッセージを出力するときには引用符が再度追加されます。 このサンプルは、2 つの二重引用符を一緒に使用することにより、引用符付きストリング・フィールドのデータ内に引用符を 組み込みます。 入力メッセージ内にあるのは、単一のヘッダー・レコード、それに続く単一の反復するコンマ区切りレコード、 および単一のトレーラー・レコードです。 これは、サンプルのメッセージ・セットを使用して解析され、XML メッセージとして書き出されます。
このトピックには、サンプルを実行するための指示があります。 また、入力テスト・メッセージと、それに対応する、予想される出力メッセージの例も示されます。 これにより、サンプルが機能したかを確認できます。
このサンプルで使用されるメッセージ・モデルについて詳しくは、 コンマ区切り値 (CSV) サンプルの調査を参照してください。
このサンプルの実行に使用されるテスト・メッセージは、以下のフォーマットに基づいています。
2005-04-01,X123456IB7,customer details<CRLF>
Bob,Dyson,"""House of the Rising Sun"", 1, Desolation Row",Orlando,FL,32802,HYT-457-AX<CRLF>
Jimmy,Pace,"1002, Misty Mountain Drive",New York,NY,10001,ADU-239-BX<CRLF>
Ralf,McCartney,67 Penny Lane,Las Vegas,NV,89125,JUI-854-CF<CRLF>
Elvis,John,3 Yellow Brick Road,Chicago,IL,60699,GGY-118-AS<CRLF>
Rick,Clayton,"461, Ocean Boulevard",Miami,FL,33101,LOP-212-TY<CRLF>
5
<CRLF> は、ASCII 16 進コード・ポイントが x'0D' および x'0A' の文字を表します。
このサンプルは、メッセージ・フロー CSV2XML を使用します。 これには多数の入力ノードが含まれていますが、このサンプルでは、CSV2XML.IN7 というキューのあるノードを使用します。 メッセージ・フローは、フォーマットを XML に変更し、メッセージを書き出す compute ノードを通じてメッセージの受け渡しを行います。 こうして CSV メッセージを解析して論理ツリーにし、それから XML フォーマットで書き出します。 出力 XML メッセージは、解析されたメッセージの論理構造を示します。
サンプルを実行するには、次のようにします。
メッセージ・フローは CSV メッセージを解析して、同じ論理メッセージを XML で書き出します。 メッセージが CSV2XML.OUT キューに出力されるはずです。
今度は、XML_msg7.enqueue ファイル (最初のフローによる XML メッセージ出力と同じものが入っている)、および XML2CSV.IN と XML2CSV.OUT の 2 つのキューを使用して、ステップ 2 から 6 を繰り返してみてください。 これにより、XML メッセージは最初のステージで使用されたものと逆のフローを通って引き渡された結果、CSV メッセージが 出力されます。 これを元の CSV メッセージと比較してください。 それらは同一であるはずです。
すべてのステップが機能したなら、サンプルは完了になります。
ここで、メッセージ・セット・プロジェクトおよびこのメッセージ定義の説明について、 コンマ区切り値 (CSV) サンプルの調査を参照してください。
予期される出力 XML メッセージは、以下のとおりです。
<?xml version="1.0"?>
<CSV_7>
<header>
<requestDate>2005-04-01</requestDate>
<requestID>X123456IB7</requestID>
<requestType>customer details</requestType>
</header>
<customer>
<firstname>Bob</firstname>
<lastname>Dyson</lastname>
<streetaddress>"House of the Rising Sun", 1, Desolation Row</streetaddress>
<cityname>Orlando</cityname>
<statecode>FL</statecode>
<postcode>32802</postcode>
<referencecode>HYT-457-AX</referencecode>
</customer>
<customer>
<firstname>Jimmy</firstname>
<lastname>Pace</lastname>
<streetaddress>1002, Misty Mountain Drive</streetaddress>
<cityname>New York</cityname>
<statecode>NY</statecode>
<postcode>10001</postcode>
<referencecode>ADU-239-BX</referencecode>
</customer>
<customer>
<firstname>Ralf</firstname>
<lastname>McCartney</lastname>
<streetaddress>67 Penny Lane</streetaddress>
<cityname>Las Vegas</cityname>
<statecode>NV</statecode>
<postcode>89125</postcode>
<referencecode>JUI-854-CF</referencecode>
</customer>
<customer>
<firstname>Elvis</firstname>
<lastname>John</lastname>
<streetaddress>3 Yellow Brick Road</streetaddress>
<cityname>Chicago</cityname>
<statecode>IL</statecode>
<postcode>60699</postcode>
<referencecode>GGY-118-AS</referencecode>
</customer>
<customer>
<firstname>Rick</firstname>
<lastname>Clayton</lastname>
<streetaddress>461, Ocean Boulevard</streetaddress>
<cityname>Miami</cityname>
<statecode>FL</statecode>
<postcode>33101</postcode>
<referencecode>LOP-212-TY</referencecode>
</customer>
<trailer>
<totalRecords>5</totalRecords>
</trailer>
</CSV_7>