如何使用Datastage以相同的顺序捕获序列中的重复XML元素

时间:2018-06-13 16:05:21

标签: xml datastage

我正在使用Datastage 9.1版本。我想以与它们出现在XML中相同的顺序读取XML元素。

XSD我看起来像这样:

<xsd:complexType name="Optimization">        
    <xsd:sequence>     
        <xsd:element name="Values" type="Values" minOccurs="1" maxOccurs="1"/>        
    </xsd:sequence>        
    <xsd:attribute name="required" type="xsd:boolean" use="required"/>    
</xsd:complexType>
<xsd:complexType name="Values">       
    <xsd:sequence> 
        <xsd:element name="Value" type="xsd:String" maxOccurs="unbounded"/>        
    </xsd:sequence>   
    <xsd:attribute name="selection" type="SelectionAttr" use="required"/>    
</xsd:complexType>

此XSD的示例XML是:

<Optimization required="false">
<Values>
<Value selected="true">abc</Value>
<Value selected="true">def</Value>
<Value selected="true">ghi</Value>
</Values>
</Optimization>

我想使用datastage读取优化值。但我想将一个序列号与每个值相关联,这些值表示该值出现在XML中的顺序,如下所示:
SeqNo价值
1 abc
2 def
3 ghi

如果XML不同,如下所示:

<Optimization required="false">
<Values>
<Value selected="true">ghi</Value>
<Value selected="true">abc</Value>
<Value selected="true">def</Value>
</Values>
</Optimization>

然后输出应该是这样的: SeqNo价值
1 ghi
2 abc
3 def

使用datastage XML阶段可以实现吗?如果是的话,请告诉我如何实现这一目标?

感谢。

2 个答案:

答案 0 :(得分:0)

XML stage / Hierarchical阶段可以帮助获取值。 例如,编号可以用变压器完成。 在XML阶段,使用XML Parser步骤。

查看互联网上提供的step by step description

的一些文档

替代: 如果您的源是关系数据库,请检查SQL选项以选择您需要的结果。

答案 1 :(得分:0)

如果您能够导入数据,就像您可以看到的那样。添加序列号很容易。

工作设计:[XML / Hierachical输入阶段]&gt; <变压器级> [输出/附加阶段]

步骤:

从输入阶段,链接到变压器,从变压器到其他阶段或某种输出阶段(文件或数据库)。将输入阶段配置为具有列,使源xml可读。打开变压器,拖动输入链接,使变压器将那个/那些链接作为输出。在类型为int的名为sequence_number(或其他)的变换器的输出中创建一个新列。在推导出新的链接类型@OUTROWNUM。

进入变压器的设置(打开变压器时左上角的按钮)进入高级选项卡。将舞台设置为以顺序模式运行。这将保持行从输入源阶段获取的顺序(假设变换器紧跟在输入阶段之后,并且输入阶段没有被强制设置为并行运行)。

变压器的输出现在应该有一个序列号。

这会回答你的问题吗?