このサンプルはサンプル 4 を基に作成したものであり、ストリング・フィールドを引用符で囲むことによる、CSV のスタイルのエスケープの基本的なサポートを追加したものです。 これにより、コンマ (,) などの予約文字をデータ内に使用できるようになります。このサンプルは、引用符のあるフィールドまたは引用符のないフィールドを解析し、引用符で囲んだフィールドでデータ内にコンマを使用することをサポートします。 このサンプルは、引用符をビジネス・データの一部として保持するので、引用符で囲んだデータ内で引用符を使用することは サポートしていません。 CSV の引用符で囲んだエスケープのより完全で複雑な処理については、サンプル 6 および サンプル 7 を参照してください。入力メッセージ内にあるのは、単一のヘッダー・レコード、それに続く単一の反復するコンマ区切りレコード、および単一のトレーラー・レコードです。これは、サンプルのメッセージ・セットを使用して解析され、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.IN5 というキューのあるノードを使用します。 メッセージ・フローは、フォーマットを XML に変更し、メッセージを書き出す compute ノードを通じてメッセージの受け渡しを行います。 こうして CSV メッセージを解析して論理ツリーにし、それから XML フォーマットで書き出します。 出力 XML メッセージは、解析されたメッセージの論理構造を示します。
サンプルを実行するには、次のようにします。
今度は、XML_msg5.enqueue ファイル (最初のフローによる XML メッセージ出力と同じものが入っている)、および XML2CSV.IN と XML2CSV.OUT の 2 つのキューを使用して、ステップ 2 から 6 を繰り返してみてください。 これにより、XML メッセージは最初のステージで使用されたものと逆のフローを通って引き渡された結果、CSV メッセージが 出力されます。 これを元の CSV メッセージと比較してください。 それらは同一であるはずです。
すべてのステップが機能したなら、サンプルは完了になります。
ここで、メッセージ・セット・プロジェクトおよびこのメッセージ定義の説明について、 コンマ区切り値 (CSV) サンプルの調査を参照してください。
予期される出力 XML メッセージは、以下のとおりです。
<?xml version="1.0"?>
<CSV_5>
<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_5>