Dieses Beispielprogramm veranschaulicht, wie CSV-Datensätze, die eindeutige, als Kennungen verwendbare Bezeichner enthalten, mit Hilfe eines Datenmodells syntaktisch analysiert werden können, das Kennungen zum Begrenzen von Datensätzen verwendet. Das mit Kennungen arbeitende CSV-Modell ist einfacher und flexibler als das nur mit Begrenzern arbeitende Modell, das in den vorherigen Beispielprogrammen verwendet wurde. Bei einem mit Kennungen arbeitenden Modell können Datensätze auch optional verwendet werden. Darüber hinaus ermöglicht ein solches Modell die Verwendung verschiedener Datensatztypen im Hauptteil der CSV-Nachricht, wie im Abschnitt über das Beispielprogramm 'CSV Message 9' erläutert wird. Die Eingabenachricht enthält einen einzelnen Headersatz gefolgt von einem einzelnen sich wiederholenden CSV-Datensatz gefolgt von einem einzelnen Trailersatensatz. Diese Nachricht wird mit Hilfe der Nachrichtengruppe des Beispielprogramms syntaktisch analysiert und als XML-Nachricht geschrieben.
In diesem Abschnitt finden Sie Anweisungen zum Ausführen des Beispielprogramms. Darüber hinaus werden als Beispiel eine Eingabetestnachricht und eine entsprechende erwartete Ausgabenachricht angegeben, damit Sie überprüfen können, ob das Beispiel erfolgreich war.
Eine ausführliche Erläuterung des in diesem Beispielprogramm verwendeten Nachrichtenmodells finden Sie unter Das CSV-Nachrichtenbeispiel testen
Die Testnachricht, die zur Steuerung dieses Beispielprogramms verwendet wird, basiert auf folgendem Format:
HEADER,2005-04-01,X123456IB7,customer details<CRLF>
CUST,Bob,Dyson,1 Desolation Row,Orlando,FL,32802,HYT-457-AX<CRLF>
CUST,Jimmy,Pace,1002 Misty Mountain Drive,New York,NY,10001,ADU-239-BX<CRLF>
CUST,Ralf,McCartney,67 Penny Lane,Las Vegas,NV,89125,JUI-854-CF<CRLF>
CUST,Elvis,John,3 Yellow Brick Road,Chicago,IL,60699,GGY-118-AS<CRLF>
CUST,Rick,Clayton,461 Ocean Boulevard,Miami,FL,33101,LOP-212-TY<CRLF>
TRAILER,5
Dabei steht '<CRLF>' für die Zeichen mit den hexadezimalen ASCII-Codepunkten x'0D' und x'0A'.
Für dieses Beispielprogramm wird der Nachrichtenfluss 'CSV2XML' verwendet. Er enthält viele Eingabeknoten, doch für dieses Beispielprogramm wird nur der Knoten mit der Warteschlange 'CSV2XML.IN8' verwendet. Der Nachrichtenfluss gibt die Nachricht über einen Rechenknoten weiter, der das Format in XML ändert und die Nachricht dann ausgibt. Dadurch wird die CSV-Nachricht in einer Syntaxanalyse in eine logische Baumstruktur umgewandelt und dann im XML-Format geschrieben. Die XML-Ausgabenachricht stellt die logische Struktur der syntaktisch analysierten Nachricht dar.
Gehen Sie folgendermaßen vor, um das Beispielprogramm auszuführen:
Wiederholen Sie nun die Schritte 2 bis 6, und verwenden Sie dabei die Datei 'XML_msg8.enqueue' (sie enthält dieselbe XML-Nachricht, die vom ersten Nachrichtenfluss ausgegeben wurde) sowie die beiden Warteschlangen 'XML2CSV.IN' und 'XML2CSV.OUT'. Dabei wird die XML-Nachricht über den umgekehrten Nachrichtenfluss als im ersten Schritt weitergegeben, und eine CSV-Nachricht wird ausgegeben. Vergleichen Sie diese Nachricht mit der ursprünglichen CSV-Nachricht. Sie müssen identisch sein.
Wenn alle Schritte erfolgreich ausgeführt wurden, ist das Beispielprogramm damit beendet.
Weitere Informationen zum Nachrichtengruppenprojekt sowie eine Erläuterung dieser Nachrichtendefinition finden Sie unter Das CSV-Beispielprogramm testen.
Die erwartete XML-Ausgabenachricht lautet:
<?xml version="1.0"?>
<CSV_8>
<header>
<requestDate>2005-04-01</requestDate>
<requestID>X123456IB7</requestID>
<requestType>customer details</requestType>
</header>
<customer>
<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>
</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_8>