[英]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.