Talend:如何使用tExtractXMLField获取嵌套循环列表

时间:2015-02-13 10:09:03

标签: xml talend

我有这个xml:

<listUsers xsi:type="UserBean">         
           <ax224:firstName>myFirstName</ax224:firstName>
           <ax224:mail>me@gmail.com</ax224:mail>
           <ax224:name>myName</ax224:name>
           <ax224:listSkill xsi:type="ax224:AgentSkillBean">
              <ax224:id>DEMO</ax224:id>
              <ax224:level>3</ax224:level>
           </ax224:listSkill>
           <ax224:listSkill xsi:type="ax224:AgentSkillBean">
              <ax224:id>CAMPAIGN_1</ax224:id>
              <ax224:level>3</ax224:level>
           </ax224:listSkill>
           <ax224:listSkill xsi:type="ax224:AgentSkillBean">
              <ax224:id>CHAT</ax224:id>
              <ax224:level>3</ax224:level>
           </ax224:listSkill>
</ax224:listUsers>
<listUsers xsi:type="UserBean"> 
...  
</ax224:listUsers> 
<listUsers xsi:type="UserBean"> 
...  
</ax224:listUsers>   

我必须使用这些结果在另一个应用程序中创建每个用户。但我需要过滤技能(例如,如果用户具有技能“CHAT”,我需要在我将在其他应用程序中创建的用户中给出相应的角色)。 问题是:我不知道如何使用我的tExtractXMLField获取技能列表。 如果我在listUsers节点上循环,我不知道如何获得他的技能,如果我在listSkill节点上循环,我得到的用户数与他拥有的技能相同,所以我的工作将尝试创建同一个用户多次。 我想有一个技能列表,所以在我的tXMLMap中,我可以说类似“listSkills.contains(”CHAT“)?true:false”但我不知道如何获取此列表... 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

最后,我找到了一个解决方案,在listSkill上循环,然后使用tAggregateRow组件聚合行。 无论如何,这是