Das vorliegende DFDL-Schema CSV_1.xsd veranschaulicht das einfachste Modell für eine durch Kommas getrennte Nachricht (Comma Separated Value, CSV). Die Mustereingabedaten (CSV_1.csv) enthalten einen wiederkehrenden, durch Kommas getrennten Datensatz. Die Mustereingabedaten werden unter Verwendung der DFDL-Schemadatei des Mustercodes analysiert, ein Zuordnungsknoten kopiert den logischen Strukturbaum der DFDL-Domäne in eine XMLNSC-Domänenbaumstruktur und diese Baumstruktur wird als XML-Nachricht serialisiert.
Dieser Abschnitt enthält Anweisungen für die Ausführung des Beispiels. Er enthält außerdem die Mustereingabedaten und erwartete Ausgabenachricht, damit Sie feststellen können, ob der Mustercode erfolgreich war.
Eine ausführliche Erläuterung des in diesem Mustercode verwendeten Nachrichtenmodells finden Sie im Abschnitt Mustercode 'Comma Separated Value (CSV)' testen.
Sollten bei der Ausführung des Mustercodes Probleme auftreten, beachten Sie die Informationen in der Dokumentation für WebSphere Message Broker im Abschnitt Probleme bei der Ausführung von Mustercodes beheben.
Sie können die Mustereingabedaten anhand der DFDL-Schemadatei mithilfe des Message Broker Toolkits testen.
So testen Sie die DFDL-Schemadatei:
Daraufhin wird die DFDL-Testperspektive geöffnet und die Ergebnisse Ihrer Testanalyse werden in der Ansicht 'DFDL Test - Parse' (DFDL-Test - Syntaxanalyse) angezeigt. Verläuft die Testanalyse erfolgreich, wird die Nachricht "Parsing completed successfully" (Syntaxanalyse erfolgreich abgeschlossen) angezeigt.
In der Ansicht 'Logical Instance' (Logische Instanz) werden die Ergebnisse Ihrer Testanalyse angezeigt. Die Daten werden dort in einer logische Baumstrukturansicht dargestellt. Zeigen Sie mithilfe des Parserprotokolls in der Ansicht 'DFDL - Trace' alle Fehler an, die während der Syntaxanalyse aufgetreten sind.
Die Testnachricht, die zur Ausführung dieses Mustercodes verwendet wird, basiert
auf folgendem Format:
Bob,Dyson,true,23,23456,0,1543543.36<CRLF>Dabei steht '<CRLF>' für die Zeichen mit den hexadezimalen ASCII-Codepunkten x'0D' und x'0A'.
Jimmy,Pace,false,1002,10001,-4.32423,654654.99<CRLF>
Ralf,McCartney,false,67,89125,4324307.35,986545.12<CRLF>
Elvis,John,true,3,60699,-0.343242356675,99999999999999.99<CRLF>
Rick,Clayton,true,461,33101,0.000000000000001,100.01
Dieser Mustercode verwendet den Nachrichtenfluss CSV2XML. Dieser Nachrichtenfluss enthält einen einzelnen MQInput-Knoten, der an die Warteschlange CSV2XML.IN1 angehängt ist. Der Nachrichtenfluss gibt die Nachricht über einen Mapping-Knoten weiter, der die Domäne in XMLNSC ändert und die Nachricht in die Warteschlange CSV2XML.OUT1 stellt. Die XML-Ausgabenachricht stellt die logische Struktur der syntaktisch analysierten Nachricht dar.
Gehen Sie folgendermaßen vor, um den Mustercode auszuführen:
Wenn alle Schritte erfolgreich ausgeführt wurden, ist der Mustercode damit beendet.
Weitere Informationen zur DFDL-Schemadatei im Nachrichtenbrokerprojekt CSVSchemas sowie eine Erläuterung dieses Nachrichtenmodells finden Sie im Abschnitt Mustercode 'Comma Separated Values (CSV)' erkunden.
Die erwartete XML-Ausgabenachricht lautet:
<io:CSV_1 xmlns:io="http://www.example.org"> <customer> <firstname>Bob</firstname> <lastname>Dyson</lastname> <goldmember>true</goldmember> <housenumber>23</housenumber> <postcode>23456</postcode> <float>0E+0</float> <balance>1543543.36</balance> </customer><customer> <firstname>Jimmy</firstname> <lastname>Pace</lastname> <goldmember>false</goldmember> <housenumber>1002</housenumber> <postcode>10001</postcode> <float>-4.3242301940918E+0</float> <balance>654654.99</balance> </customer> <customer> <firstname>Ralf</firstname> <lastname>McCartney</lastname> <goldmember>false</goldmember> <housenumber>67</housenumber> <postcode>89125</postcode> <float>4.3243075E+6</float> <balance>986545.12</balance> </customer> <customer> <firstname>Elvis</firstname> <lastname>John</lastname> <goldmember>true</goldmember> <housenumber>3</housenumber> <postcode>60699</postcode> <float>-3.43242347240448E-1</float> <balance>99999999999999.99</balance> </customer> <customer> <firstname>Rick</firstname> <lastname>Clayton</lastname> <goldmember>true</goldmember> <housenumber>461</housenumber> <postcode>33101</postcode> <float>1.00000000362749E-15</float> <balance>100.01</balance> </customer> </io:CSV_1>