【问题标题】:Talend; XML: Select one element of many based on its sub-element attribute塔伦德; XML:根据子元素属性从多个元素中选择一个
【发布时间】:2014-05-12 14:13:18
【问题描述】:

我想用 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 子条目的值仅提取特定条目?

【问题讨论】:

    标签: xml extract talend


    【解决方案1】:

    有几个选项。

    1. 如果您对 code != client 的各方不感兴趣,那么您可以简单地更改 Talend XML 组件中的 xpath 循环。您需要遍历代码 == 派对的各方。例如: //*[Code() = 'Client']
    2. 您可以简单地选择所有当事方并使用 tMap 对元素代码 ==“客户”的当事方进行提取/操作。有关 tMap 的更多信息,请参阅:https://help.talend.com/display/TalendOpenStudioforBigDataUserGuide520EN/5.2+tMap+operation(尽管需要帐户)

    【讨论】:

      【解决方案2】:

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

      1. 循环 Xpath 查询 = "/Roles/Party"
      2. 然后在映射选项卡column=code,xPathQyery=“code”

      一旦您按照上面的方式进行配置,然后使用 tMap 并将来自 tFileInputXML 的主连接与适当的模式连接起来。

      现在在右侧的 tMap 中,单击“激活过滤器表达式”,然后在其中映射您的“代码”列,如下面的表达式。

      "Client".equalsIgnoreCase(row2.code)
      

      希望这能解决您的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多