Talend / XPath:在混合上下文

时间:2017-09-21 11:17:14

标签: xpath talend

我有以下XML数据:

<?xml version="1.0"?>
<products>
  <product>
    <ingredient id="1" weighting="1">
       <![CDATA[Name of ingredient 1]]>
       <blocked_search_terms><![CDATA[Term A, Term B, Term C]]></blocked_search_terms>
   </ingredient>
   <ingredient id="2" weighting="2">
       <![CDATA[Name of ingredient 2]]>
       <blocked_search_terms><![CDATA[Term E, Term F]]></blocked_search_terms>
   </ingredient>
  </product>
</products>

我试图通过Talend中的tXmlMap组件获取所有成分名称的列表。问题是,我得到null成分名称和被阻止搜索词的串联字符串,例如。

表达式1: [xml.products:/products/product/ingredient]

结果1: &#34;成分名称1术语A,术语B,术语C,成分名称2术语E,术语F&#34;

表达式2: [xml.products:/products/product/ingredient/text()]

结果2: &#34; null,null&#34;

我想要达到的结果是: &#34;成分1的名称,成分2的名称和#34;

我需要用什么才能获得它?

1 个答案:

答案 0 :(得分:0)

由于您无法直接潜入CDATA(请参阅what xpath to select CDATA content when some childs exist),因此您能够通过指示您想要的元素来实现您想要的目标:

[xml.products:/products/product/ingredient[1]]