混合位置和定界示例

关于此任务

此示例显示如何构建平面文件模式来解析混合的位置和定界数据。要创建平面文件模式,您必须首先分析平面文件数据以确定要添加到平面文件模式的字段和节点。在此示例中,您将为以下两行数据创建平面文件模式:

BuyRight Pharmacy;USACAMVI334;!389!22;34980;

Taylor Drugs;USANJWLB128;!778!23!523;5667;

使用自顶向下的方法来定义平面文件模式的记录和字段,如以下步骤中所示:

过程

  1. 创建根节点:
    1. 项目选项卡,右键单击平面文件模式文件夹,然后选择新建平面文件模式 将会打开“基本向导”对话框。
    2. 名称字段中输入 Order
    3. 单击确定 这样会打开“平面文件模式编辑器”,并且平面文件模式显示在项目选项卡中的平面文件模式文件夹下。 此外,模式布局选项卡中还会显示同名的根节点。
  2. 确定数据中结构的最高级别。在此示例中,最大的结构为两行,每行表示一个记录。此平面文件数据中的两条记录将由位于两条记录之间的行末符来定界,如图 1 所示:
    图 1. 混合示例 1:文件中的记录由行末符(位于构成记录的字符之间)来定界。混合示例 1
  3. 配置名为 Order 的根节点以使用以下条件来解析子重复记录:
    • 使用定界符将数据分隔在多个记录中。
    • 预期文档以 EOS(流结尾)结束,因为最后一个记录不以定界符结束。
    • 使用“行结束”定界符以对任何子记录进行定界。
    • 预期定界符在数据之间。
    • 预期重复子记录。
    • 使用“行结束”定界符以对子重复记录进行定界。

    使用这些条件为 Order 节点的基本属性定界符窗格指定以下值,如图 2 所示:

    图 2. 混合示例窗格 1,其中的“结构”为“定界”,并且勾选了“文档以 EOS 结束”框。选择了“行末”选项,并将“子定界符位置”设置为“介于”混合示例窗格 1
  4. 向根节点中添加子节点以表示记录。 在模式布局选项卡中,右键单击 Order 节点。从菜单中选择新建子代 > 记录,输入 purchaseOrder,然后单击确定
  5. 确定数据中结构的下一级别。在本示例中,结构的下一级别是由分号定界的字段,如图 3 所示:
    图 3. 混合示例 2:记录的各个字段由分号来定界。混合示例 2
  6. 配置 purchaseOrder 节点以解析这些字段,如以下条件所述:
    • purchaseOrder 节点可以一个或多次出现。
    • 使用定界符将记录数据解析为子字段。
    • 使用分号作为数据之间的定界符。
    • 预期定界符在数据之后。

    使用这些条件为 purchaseOrder 节点的“基本属性”和“定界符”窗格指定以下值,如中图 4 所示:

    图 4. 混合示例窗格 2:“结构”设置为“定界”,选择了“最大次数无限”和“字符”选项。“子定界符位置”设置为“之后”。混合示例窗格 2
  7. 通过在模式布局选项卡中右键单击 purchaseOrder 节点,然后从列表中选择新建子代选项,以添加 purchaseOrder 节点的字段。将会显示“批量添加”对话框。
  8. 在“批量添加”对话框,添加 purchaseOrder 节点的所有子记录和字段:
    • 单击添加,然后将 field1 更改为 storeName。 保留节点类型设置为字段
    • 单击添加,然后将 field2 更改为 originCode。 将节点类型更改为记录
    • 单击添加,然后将 field3 更改为 items。 将节点类型更改为记录
    • 单击添加,然后将 field4 更改为 orderID。 保留节点类型设置为字段
    • 单击确定
  9. 确定数据中结构的下一级别。在本示例中,结构的下一级别是一组位于 originCode 记录中的位置数据,如图 5 所示:
    图 5. 混合示例 3:originCode 是定界记录中的位置数据部分。混合示例 3
  10. originCode 记录配置为位置记录:
    1. 模式布局选项卡中,选择 originCode 节点。 将会显示基本属性
    2. 结构列表中,选择位置
  11. 通过在模式布局选项卡中右键单击 originCode 节点,然后从列表中选择新建子代选项,以添加 originCode 节点的位置字段。 将会打开“批量添加”对话框。
  12. 在“批量添加”对话框,添加 originCode 节点的所有子记录和字段:
    1. 单击添加,然后将 field1 更改为 countryCode。 保留节点类型设置为字段
    2. 单击添加,然后将 field2 更改为 stateCode。 保留节点类型设置为字段
    3. 单击添加,然后将 field3 更改为 cityCode。 保留节点类型设置为字段
    4. 单击添加,然后将 field4 更改为 storeCode。 保留节点类型设置为字段
    5. 单击确定
  13. 配置每个位置字段的位置属性。针对 originCode 节点的每个子节点,在模式布局选项卡中单击节点,然后在“属性”窗格的底部设置字段偏移量字段长度的值,如以下列表所示:
    • countryCode -
      位置属性国家或地区
    • stateCode -
      位置属性省/自治区/直辖市
    • cityCode -
      位置属性城市
    • storeCode -
      位置属性存储器

    对于每个字段,将在处理 originCode 字符串时从当前字符位置来校准字段偏移量,而不是从 originCode 字符串的开头进行校准。在此示例中,处理了 countryCode,并且将 originString 的前三个字符分配给 countryCode。处理 stateCode 时,当前字符位置已位于字符位置 3,因此应将 stateCode字段偏移量与当前字符位置相加,以获取用于处理 stateCode 字符串的起始点,如图 6 所示:

    图 6. 混合示例 4 显示当前光标位置和字段偏移量。混合示例 4
  14. 确定数据中结构的下一级别。在本示例中,结构的下一级别是由惊叹号定界的重复字段,如图 7 所示:
    图 7. 混合示例 5,其中定界数据由惊叹号表示。混合示例 5
  15. 配置 items 节点以使用以下条件来解析子重复记录:
    • 使用定界符将数据分隔在多个字段中。
    • 使用惊叹号作为定界符来对任何子字段进行定界。
    • 预期定界符在数据之前。
    • 预期一个或多个重复子字段。
    • 使用惊叹号作为定界符来对子重复字段进行定界。

    使用这些条件为 items 节点的“基本属性”和“定界符”窗格指定以下值,如图 8 所示:

    图 8. 混合示例窗格 3,其中“子定界符位置”设置为“之前”。混合示例窗格 3
  16. 通过在模式布局选项卡中右键单击 items 节点,然后从列表中选择新建子代 > 字段选项,以向 items 节点中添加重复子字段。 将会打开“新建字段”对话框。
  17. 字段名称 中输入 item,然后单击确定
  18. 配置 item 节点以包含一个或多个出现,如图 9 所示:
    图 9. 混合示例窗格 4,其中“最大重复次数”设置为“无限次”。混合示例窗格 4
    “平面文件模式”已完整,准好好进行测试。
  19. 将以下文本粘贴到测试窗格的左侧子窗格中:

    BuyRight Pharmacy;USACAMVI334;!389!22;34980;

    Taylor Drugs;USANJWLB128;!778!23!523;5667;

    mixedData.txt 文件中也提供了此数据。如果已在 Studio 安装期间接受缺省值,那么此文件位于以下目录中:C:\Program Files\IBM\WebSphere Cast Iron Studio 3.X\Samples\FlatFileSchema
    注意: 请勿在最后一行之后添加回车符。
  20. 单击测试图标。
    “测试”图标
    这样会打开“保存确认”对话框。
  21. 单击。以下 XML 形式的数据会显示在测试窗格中:
    <?xml version="1.0" encoding="UTF-8"?>
    <Order>
    	<purchaseOrder>
    		<storeName>BuyRight Pharmacy</storeName>
    		<originCode>
    			<countryCode>USA</countryCode>
    			<stateCode>CA</stateCode
    			<cityCode>MVI</cityCode>
    			<storeCode>334</storeCode>
    		</originCode>
    		<items>
    			<item>389</item>
    			<item>22</item>
    		</items>
    		<orderId>34980</orderId>
    	</purchaseOrder>
    	<purchaseOrder>
    		<storeName>Taylor Drugs</storeName>
    		<originCode>
    			<countryCode>USA</countryCode>
    			<stateCode>NJ</stateCode>
    			<cityCode>WLB</cityCode>
    			<storeCode>128</storeCode>
    		</originCode>
    		<items>
    			<item>778</item>
    			<item>23</item>
    			<item>523</item>
    		</items>
    		<orderId>5667</orderId>
    	</purchaseOrder>
    </Order>
  22. 模式布局选项卡中,单击 item 节点。在测试窗格的右侧子窗格中,已解析到 item 节点中的数据会突出显示,如图 10 所示:
    图 10. item 节点会突出显示混合示例测试
  23. 单击 state 节点以查看已分配给 state 节点的数据。
    注: FlatFileSchemasExample 项目中提供了订单平面文件模式的参考实施。要查看并打开 FlatFileSchemasExample 项目,请遵循分组示例中的步骤 1 和 2,然后双击订单平面文件模式。平面文件模式的节点将显示在模式布局选项卡中,Order 根节点的属性将显示在右侧窗格中。



反馈 | 声明


http://pic.dhe.ibm.com/infocenter/wci/v7r0m0/topic/com.ibm.wci.doc/Mixed_Positional_and_Delimited_Example.html