繁体   English   中英

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

[英]How to capture the repeating XML elements in a sequence using Datastage in the same order

我正在使用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中出现的顺序,如下所示:
序列号值
1 abc
2 def
3吉

如果XML不同,如下所示:

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

然后输出应如下所示:SeqNo Value
1吉
2 abc
3 def

使用datastage XML阶段可以做到这一点吗? 如果是这样,您能告诉我如何实现这一目标吗?

谢谢。

XML阶段/分层阶段可以帮助获取值。 例如,可以使用变压器进行编号。 在XML阶段,使用XML Parser步骤。

查阅互联网上的一些文档,以获取逐步说明

替代方案:如果您的源是关系数据库,请签出SQL选项以选择所需的结果。

如果您能够导入数据,看起来可以。 添加序列号很容易。

工作设计:[XML /多层次输入阶段]>变压器阶段> [输出/附加阶段]

脚步:

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

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

变压器的输出现在应具有序列号。

这是否回答你的问题?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM