拓蓝; XML:根据子元素属性选择多个元素

时间:2014-05-12 14:13:18

标签: xml extract talend

我想用Talend

从XML文件中提取数据

除了一个元素包含许多条目,我只需要一个特定的条目

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

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

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

我想只提取Code = Client的条目Party,但是当我映射时,我会得到数据库中提取的所有条目。

如何根据Talend的子条目值仅提取特定条目?

2 个答案:

答案 0 :(得分:1)

有几种选择。

  1. 如果您对代码!= client的各方不感兴趣,那么您只需在Talend XML组件中更改xpath循环即可。您需要遍历代码== party的各方。例如:// * [Code()=&#39; Client&#39;]
  2. 您可以简单地选择所有缔约方并使用tMap向缔约方提取/做某事,其中元素代码==&#34;客户&#34;。有关tMap的更多信息,请参阅:https://help.talend.com/display/TalendOpenStudioforBigDataUserGuide520EN/5.2+tMap+operation(需要帐户)

答案 1 :(得分:1)

创建一个作业来读取xml文件,然后获取一个tFileInputXML组件并配置如下。

  1. 循环Xpath查询= "/Roles/Party"
  2. 然后在映射标签栏=代码,xPathQyery =&#34;代码&#34;
  3. 如上所述进行配置,然后使用tMap并将tFileInputXML中的主连接与适当的模式连接起来。

    现在在右侧的tMap中,单击&#34;激活过滤器表达式&#34;然后映射你的&#34;代码&#34;其中的列,如下面的表达式。

    "Client".equalsIgnoreCase(row2.code)
    

    希望这能解决您的问题。

相关问题