<splitter evaluator="xpath" expression="/healthcare/plans" doc:name="Splitter" />
<enricher source="#[flowVars.tempid]" target="#[xpath('/plans/planid').text ]" doc:name="Message Enricher">
above code working fine using xpath
但是在使用xpath3的代码下方没有拿起文本
<splitter expression="#[xpath3('/healthcare/plans', payload, 'NODESET')]" doc:name="Splitter" />
<enricher source="#[flowVars.tempid]" target="#[xpath3('/plans/planid').text ]" doc:name="Message Enricher">
答案 0 :(得分:0)
您的配置存在一些问题:
默认情况下xpath3
会返回一个字符串,因此无需调用.text
。更多相关信息:http://blogs.mulesoft.org/mule-3-6-xml-xpath-xslt-xquery3/
源和目标表达式错误的方式。如果要将XPath表达式的结果存储在一个变量中,那么target
就是变量所在的位置,source
是值的来源,在这种情况下是xpath表达式。
您的Xpath表达式错误。不需要/plans
,因为XML已经拆分为单独的计划节点。
试试这个:
<splitter expression="#[xpath3('/healthcare/plans/*', payload, 'NODESET')]"
doc:name="Splitter" />
<enricher source="#[xpath3('planid')]" target="#[flowVars.tempid]"
doc:name="Message Enricher">