簡體   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