2014-05-12 68 views
1

我想了TalendTalend; XML:選擇基於其子元素屬性許多的要素之一

提取從XML文件中的數據,除了一個元素包含很多項,我只需要一個特定條目

<Roles> 
    <Party> 
    <Code>Client</code> 
    ... //other elements 
    </Party> 

    <Party> 
    <Code>Sales</code> 
    ... 
    </Party> 

    <Party> 
    <Code>Third-party</code> 
    ... 
    </Party> 
</Roles> 

我想只提取Code = Client的入口方,但是當我映射時,我會獲取數據庫中提取的所有條目。

我怎樣才能提取具體條目取決於其與Talend子條目的價值?

回答

1

有幾個選項。

  1. 如果您對code!= client的參與方不感興趣,那麼您可以簡單地在Talend XML組件中更改xpath循環。你需要循環通過代碼==派對的派對。例如:// * [Code()='Client']
  2. 您可以簡單地選擇所有參與方並使用tMap來提取/執行與元素代碼==「客戶端」相關的內容。有關TMAP的更多信息,請參閱本:https://help.talend.com/display/TalendOpenStudioforBigDataUserGuide520EN/5.2+tMap+operation(需要帳戶雖然)
1

創建一個作業來讀取XML文件,然後採取tFileInputXML成分如下配置。

  1. 環Xpath查詢= "/Roles/Party"
  2. 然後在映射表欄=代碼,xPathQyery =「代碼」

一旦如上配置再取TMAP並連接從tFileInputXML與適當的模式主連接。

現在在tMap的右側,點擊「激活過濾器表達式」,然後映射它的「代碼」列,就像下面的表達式一樣。

"Client".equalsIgnoreCase(row2.code) 

希望這能解決您的問題。

相關問題