Datastage Hierarchical Stage配置:生成指定XML输出的技术问询
DataStage Hierarchical Stage 生成指定XML结构的正确配置方案
一、前置数据准备
- 确保
HeaderInput仅返回1条固定数据(n1:Header和n2:NewRootKM的UUID等固定值需唯一),如果原表有多条,在Transformer中添加过滤逻辑(比如取第一条记录)。 PersonInput主表数据保持原样,每条记录对应一个<n2:PersonMain>节点。
二、Hierarchical Stage 核心配置
1. 定义XML Schema
在Hierarchical Stage的Schema标签页,手动编写符合要求的Schema,包含命名空间及节点约束:
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:n1="http://你的n1命名空间地址" xmlns:n2="http://你的n2命名空间地址" targetNamespace="http://你的n2命名空间地址"> <xs:element name="NewRootKM" type="n2:NewRootKMType"/> <xs:complexType name="NewRootKMType"> <xs:sequence> <xs:element ref="n1:Header"/> <xs:element name="PersonMain" type="n2:PersonMainType" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="UUID" type="xs:string"/> </xs:complexType> <xs:complexType name="HeaderType" xmlns:n1="http://你的n1命名空间地址"> <xs:sequence> <!-- 替换为Header实际包含的字段,例如: <xs:element name="SystemID" type="xs:string"/> <xs:element name="CreateTime" type="xs:dateTime"/> --> </xs:sequence> </xs:complexType> <xs:element name="Header" type="n1:HeaderType" xmlns:n1="http://你的n1命名空间地址"/> <xs:complexType name="PersonMainType"> <xs:sequence> <!-- 替换为PersonMain实际包含的字段,例如: <xs:element name="PersonID" type="xs:string"/> <xs:element name="PersonName" type="xs:string"/> --> </xs:sequence> </xs:complexType> </xs:schema>
- 重点:给
<PersonMain>节点设置maxOccurs="unbounded",允许重复;替换实际的命名空间地址和节点字段。
2. 输入链接配置
- 给Hierarchical Stage添加两个输入链接:
- 链接1:命名为
HeaderInput,连接处理后的固定值数据集(HeaderInput/Transformer输出),在链接属性中设置Cardinality为1(强制仅1条输入)。 - 链接2:命名为
PersonInput,连接主表数据集(PersonInput/Transformer输出),设置Cardinality为Unbounded(允许多条输入)。
- 链接1:命名为
3. 层级映射配置
切换到Mapping标签页,完成字段关联:
- 固定值映射:将
HeaderInput的字段分别映射到<n1:Header>的子字段,以及<n2:NewRootKM>的UUID属性。 - 重复节点映射:选中Schema中的
<n2:PersonMain>节点,在映射面板选择PersonInput作为数据源,将PersonInput的字段逐一映射到<n2:PersonMain>的子字段——这一步会自动建立循环关联,每条PersonInput记录生成一个独立的PersonMain节点。 - 注意:确保n1、n2前缀与Schema中的命名空间完全匹配。
4. 输出设置
- 在
Output标签页,勾选Include XML Declaration,编码选择UTF-8;如需格式化输出,勾选Pretty Print。 - 将输出链接连接到Sequential File Stage,设置输出文件路径,文件格式选择
XML。
三、常见问题排查(针对之前配置失效的情况)
- 检查
HeaderInput是否返回多条数据:这会导致层级结构混乱,必须确保仅1条输入。 - 确认输入链接的Cardinality设置:HeaderInput设为
1,PersonInput设为Unbounded。 - 检查Schema中
<PersonMain>的maxOccurs属性:未设置为unbounded会导致无法生成重复节点。 - 验证映射关系:确保PersonInput与PersonMain节点建立了正确的循环关联,而非单条映射。
内容的提问来源于stack exchange,提问作者Mr Lewy
相关产品推荐
相关产品推荐

