このサンプルはサンプル 8 を基に作成したものであり、2 つの異なるタイプの顧客レコードの選択を CSV メッセージに組み込んだものです。 ここでは、タグ付きモデルを使えばこれが簡単に行えること、および任意の数の異なるタイプのレコードが任意の順序で出現する モデルを作成可能であることを示します。 入力メッセージ内にあるのは、単一のヘッダー・レコード、それに続く単一の反復するコンマ区切りレコード、 および単一のトレーラー・レコードです。 これは、サンプルのメッセージ・セットを使用して解析され、XML メッセージとして書き出されます。
このトピックには、サンプルを実行するための指示があります。 また、入力テスト・メッセージと、それに対応する、予想される出力メッセージの例も示されます。 これにより、サンプルが機能したかを確認できます。
このサンプルで使用されるメッセージ・モデルについて詳しくは、 コンマ区切り値 (CSV) サンプルの調査を参照してください。
このサンプルの実行に使用されるテスト・メッセージは、以下のフォーマットに基づいています。
HEADER,2005-04-01,X123456IB7,customer details
CUST,Bob,Dyson,1 Desolation Row,Orlando,FL,32802,HYT-457-AX
CUST,Jimmy,Pace,1002 Misty Mountain Drive,New York,NY,10001,ADU-239-BX
CUST,Ralf,McCartney,67 Penny Lane,Las Vegas,NV,89125,JUI-854-CF
CUST,Elvis,John,3 Yellow Brick Road,Chicago,IL,60699,GGY-118-AS
BUS,USA.COM,1600 Pensylvania Avenue,Washington,DC,20500,MAD-444-IT
CUST,Rick,Clayton,461 Ocean Boulevard,Miami,FL,33101,LOP-212-TY
TRAILER,5
<CRLF> は、ASCII 16 進コード・ポイントが x'0D' および x'0A' の文字を表します。
このサンプルは、メッセージ・フロー CSV2XML を使用します。 これには多数の入力ノードが含まれていますが、このサンプルでは、CSV2XML.IN9 というキューのあるノードを使用します。 メッセージ・フローは、フォーマットを XML に変更し、メッセージを書き出す compute ノードを通じてメッセージの受け渡しを行います。 こうして CSV メッセージを解析して論理ツリーにし、それから XML フォーマットで書き出します。 出力 XML メッセージは、解析されたメッセージの論理構造を示します。
サンプルを実行するには、次のようにします。
メッセージ・フローは CSV メッセージを解析して、同じ論理メッセージを XML で書き出します。 メッセージが CSV2XML.OUT キューに出力されるはずです。
今度は、XML_msg9.enqueue ファイル (最初のフローによる XML メッセージ出力と同じものが入っている)、および XML2CSV.IN と XML2CSV.OUT の 2 つのキューを使用して、ステップ 2 から 6 を繰り返してみてください。 これにより、XML メッセージは最初のステージで使用されたものと逆のフローを通って引き渡された結果、CSV メッセージが 出力されます。 これを元の CSV メッセージと比較してください。 それらは同一であるはずです。
すべてのステップが機能したなら、サンプルは完了になります。
ここで、メッセージ・セット・プロジェクトおよびこのメッセージ定義の説明について、 コンマ区切り値 (CSV) サンプルの調査を参照してください。
予期される出力 XML メッセージは、以下のとおりです。
<?xml version="1.0"?>
<CSV_9>
<header>
<requestDate>2005-04-01</requestDate>
<requestID>X123456IB7</requestID>
<requestType>customer details</requestType>
</header>
<individualCustomer>
<firstname>Bob</firstname>
<lastname>Dyson</lastname>
<streetaddress>1 Desolation Row</streetaddress>
<cityname>Orlando</cityname>
<statecode>FL</statecode>
<postcode>32802</postcode>
<referencecode>HYT-457-AX</referencecode>
</individualCustomer>
<individualCustomer>
<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>
</individualCustomer>
<individualCustomer>
<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>
</individualCustomer>
<individualCustomer>
<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>
</individualCustomer>
<businessCustomer>
<businessname>USA.COM</businessname>
<streetaddress>1600 Pennsylvania Avenue</streetaddress>
<cityname>Washington</cityname>
<statecode>DC</statecode>
<postcode>20500</postcode>
<referencecode>MAD-444-IT</referencecode>
</businessCustomer>
<individualCustomer>
<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>
</individualCustomer>
<trailer>
<totalRecords>6</totalRecords>
</trailer>
</CSV_9>