此 DFDL 模式 CSV_1.xsd 描述了逗号分隔值消息的最简单模型。此样本输入数据 CSV_1.csv 包含重复逗号分隔记录。此样本输入数据将通过使用样本 DFDL 模式文件进行解析,Mapping 节点会将 DFDL 域逻辑结构树复制到 XMLNSC 域树,然后此树会序列化为 XML 消息。
本主题包括用于运行样本的指示信息。还包括样本输入数据和预期输出消息,使您能够确认样本是否有效。
有关在此样本中使用的消息模型的更多详细说明,请参阅探索逗号分隔值 (CSV) 样本。
如果运行此样本时遇到任何问题,请参阅 IBM Integration Bus 文档中的解决运行样本时的问题。
您可以使用 IBM Integration Toolkit 根据 DFDL 模式文件来测试样本输入数据。
要测试 DFDL 模式文件:
这将打开“DFDL 测试”透视图,测试/解析的结果将显示在“DFDL 测试/解析”视图中。如果测试解析成功,会出现一条消息,该消息指出“解析已成功完成”。
您可以在“逻辑实例”视图中查看测试/解析的结果。“逻辑实例”视图会在逻辑树视图中显示数据。请使用“DFDL/跟踪”视图中的解析器日志来查看解析期间发生的任何错误。
运行此样本时使用的测试消息基于以下格式:
Bob,Dyson,true,23,23456,0,1543543.36<CRLF><CRLF> 表示具有 ASCII 十六进制代码点 x'0D' 和 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
此样本使用消息流 CSV2XML。此消息流包含单个连接到队列 CSV2XML.IN1 的 MQInput 节点。消息流通过 Mapping 节点传递消息,该节点将消息的域更改为 XMLNSC 并将消息放到队列 CSV2XML.OUT1 上。输出 XML 消息将显示解析的消息的逻辑结构。
要运行样本:
如果所有步骤都成功,那么样本就完成了。
现在,查看名为 CSVSchemas 的 Integration 项目中的 DFDL 模式文件以及探索逗号分隔值 (CSV) 样本中对此消息模型的说明。
预期输出 XML 消息为:
<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>