在xpath表达式中使用mule变量值

在xpath表达式中使用mule变量值,xpath,expression,mule,mule-studio,Xpath,Expression,Mule,Mule Studio,我有一个变量集 <set-variable variableName="productIdvar" value="#[xpath://productId]" doc:name="Variable" /> 在它即将到来的时候 我想在xpath表达式中使用变量productIdvar的值 <when expression="//*[local-name()='itemid']=?" evaluator="xpath"> 或 我应该用什么来代替?要获取变量的值

我有一个变量集

<set-variable variableName="productIdvar" value="#[xpath://productId]" doc:name="Variable" />

在它即将到来的时候

我想在xpath表达式中使用变量productIdvar的值

<when expression="//*[local-name()='itemid']=?" evaluator="xpath">


我应该用什么来代替?要获取变量的值

谢谢 拉胡尔。



请注意,表达式中的
itemid
周围没有引号,下面的表达式应该适用于您

<when expression="#[xpath('//*[local-name()=\'itemid\']').text == productIdvar ]">

通过这种方式,您应该能够将xpath的结果与“productIdVar”变量进行比较


希望这有帮助。

如果您的MEL有点混乱,请尝试my-XPath转换器,它可以动态解析XPath变量。

您可以使用XPATH3并尝试类似的方法
#[xpath3('/products/validlity')==flowVars.productIdvar]


Xpath3参考:-

“productIdvar”也是一个DOM文本节点,为什么不:
productIdvar.text
?@David Dossot根据OP中提供的配置代码,productIdvar是字符串[xpath://productId] . 如果是xpath('//productId'),那么我应该使用productIdVar.text您是正确的:我没有意识到OP使用了不推荐的表达式语法来设置
productIdVar
,我错误地假设它是MEL:$@user1760178:感谢您的回复,但是使用上面的答案,我得到了以下错误-由以下原因引起:org.mule.api.expression.ExpressionRuntimeException:执行表达式“xpath('/*[local-name()=\'itemid\'])。text==productIdvar”失败。@DavidDossot:我甚至使用了productIdvar.text,它给出了相同的异常。
<when expression="#[xpath('//*[local-name()=itemid]') == productIdvar ]">
<when expression="#[xpath('//*[local-name()=\'itemid\']').text == productIdvar ]">