问题描述
我试图在 Mule 中的 XPath 表达式下运行.它一个接一个地给我错误.有人可以帮我纠正这些 Mule XPath 表达式吗:
<xm:namespace prefix="acord" uri="ACORD.org/Standards/Life/2"/><xm:namespace prefix="soap" uri="schemas.xmlsoap.org/soap/envelope/"/></xm:namespace-manager><set-variable variableName="pwaHolding"value="#[xpath('//acord:TXLife/acord:TXLifeRequest/acord:OLifE/acord:Relation[acord:RelationRoleCode/@tc = '37']/@OriginatingObjectID').value"/><set-variable variableName="pwaPolNumber"value="#[xpath('//acord:TXLife/acord:TXLifeRequest/acord:OLifE/acord:Holding[@id=$pwaHolding]/acord:Policy/acord:PolNumber').text]"/>
我在尝试执行以上 XPATH 表达式时遇到异常:
消息:表达式xpath('//acord:TXLife/acord:TXLifeRequest/acord:OLifE/acord:Relation[acord:RelationRoleCode/@tc == '37']/@OriginatingObjectID'的执行).value"失败.(org.mule.api.expression.ExpressionRuntimeException).消息负载的类型:字符串代码:MULE_ERROR--2--------------------------------------------------------------------------------异常堆栈是:1. [错误:意外令牌:37][近:{... @tc == '37']/@OriginatingObjec ....}]^[行:1,列:96](组织.mvel2.CompileException)org.mvel2.compiler.ExpressionCompiler:247 (null)2. 表达式xpath('//acord:TXLife/acord:TXLifeRequest/acord:OLifE/acord:Relation[acord:RelationRoleCode/@tc == '37']/@OriginatingObjectID').value"的执行失败.(org.mule.api.expression.ExpressionRuntimeException)org.mule.el.mvel.MVELExpressionLanguage:211 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/expression/ExpressionRuntimeException.html)3. 表达式xpath('//acord:TXLife/acord:TXLifeRequest/acord:OLifE/acord:Relation[acord:RelationRoleCode/@tc == '37']/@OriginatingObjectID').value"的执行失败.(org.mule.api.expression.ExpressionRuntimeException).消息负载的类型:字符串(org.mule.api.transformer.TransformerMessagingException)org.mule.transformer.AbstractTransformer:123 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/TransformerMessagingException.html)--------------------------------------------------------------------------------根异常堆栈跟踪:[错误:意外令牌:37][近:{... @tc == '37']/@OriginatingObjec ....}] ^[行:1,列:96]在 org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:247)在 org.mvel2.util.ParseTools.subCompileExpression(ParseTools.java:1944)在 org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:862)+ 3 更多(设置调试级别日志记录或-Dmule.verbose.exceptions=true")
大卫,
即使在将 '
替换为 "
之后,我仍然遇到以下错误:
我的第二个 XPATH 表达式也有问题,但也失败了.请帮我解决这个问题
该错误来自于您在由 '
分隔的字符串中使用了 '
的事实,它可以不行.例如,在以下表达式中,问题围绕 '37'
:
value="#[xpath('//acord:TXLife/acord:TXLifeRequest/acord:OLifE/acord:Relation[acord:RelationRoleCode/@tc = '37']/@OriginatingObjectID').value"/>
另一个问题是 MEL 表达式末尾缺少结束的 ]
.
尝试:
value="#[xpath("//acord:TXLife/acord:TXLifeRequest/acord:OLifE/acord:Relation[acord:RelationRoleCode/@tc = '37']/@OriginatingObjectID").value"/>
看看你的第二个 XPath,我看到了 [@id=$pwaHolding]
.我假设此时您正在尝试使用由第一个 XPath 提取的 pwaHolding
流变量.这将不起作用,因为 MVEL 没有字符串插值.您需要改为使用连接,顺便说一句,不要忘记将 @id
与值进行比较:
[@id='"+ pwaHolding + "']
I am trying to run below XPath expressions in Mule. Its giving me errors one after another.Can someone help me correcting these Mule XPath expressions :
<xm:namespace-manager includeConfigNamespaces="true">
<xm:namespace prefix="acord" uri="ACORD.org/Standards/Life/2" />
<xm:namespace prefix="soap" uri="schemas.xmlsoap.org/soap/envelope/" />
</xm:namespace-manager>
<set-variable variableName="pwaHolding"
value="#[xpath('//acord:TXLife/acord:TXLifeRequest/acord:OLifE/acord:Relation[acord:RelationRoleCode/@tc = '37']/@OriginatingObjectID').value" />
<set-variable variableName="pwaPolNumber"
value="#[xpath('//acord:TXLife/acord:TXLifeRequest/acord:OLifE/acord:Holding[@id=$pwaHolding]/acord:Policy/acord:PolNumber').text]" />
I am getting below exception when trying to execute above XPATH expressions :
Message :Execution of the expression "xpath('//acord:TXLife/acord:TXLifeRequest/acord:OLifE/acord:Relation[acord:RelationRoleCode/@tc == '37']/@OriginatingObjectID').value" failed. (org.mule.api.expression.ExpressionRuntimeException). Message payload is of type: String
Code : MULE_ERROR--2
--------------------------------------------------------------------------------
Exception stack is:
1. [Error: unexpected token: 37]
[Near : {... @tc == '37']/@OriginatingObjec ....}]
^
[Line: 1, Column: 96] (org.
mvel2.CompileException)
org.mvel2.compiler.ExpressionCompiler:247 (null)
2. Execution of the expression "xpath('//acord:TXLife/acord:TXLifeRequest/acord:OLifE/acord:Relation[acord:RelationRoleCode/@tc == '37']/@OriginatingObjectID').value" failed. (org.mule.api.expression.ExpressionRuntimeException)
org.mule.el.mvel.MVELExpressionLanguage:211 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/expression/ExpressionRuntimeException.html)
3. Execution of the expression "xpath('//acord:TXLife/acord:TXLifeRequest/acord:OLifE/acord:Relation[acord:RelationRoleCode/@tc == '37']/@OriginatingObjectID').value" failed. (org.mule.api.expression.ExpressionRuntimeException). Message payload is of type: String (org.mule.api.transformer.TransformerMessagingException)
org.mule.transformer.AbstractTransformer:123 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/TransformerMessagingException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
[Error: unexpected token: 37]
[Near : {... @tc == '37']/@OriginatingObjec ....}] ^
[Line: 1, Column: 96]
at org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:247)
at org.mvel2.util.ParseTools.subCompileExpression(ParseTools.java:1944)
at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:862)
+ 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
Hi David,
I even after replacing '
with "
I am still getting below error :
Message : Execution of the expression "xpath('//acord:TXLife/acord:TXLifeRequest/acord:OLifE/acord:Relation[acord:RelationRoleCode/@tc == '37']/@OriginatingObjectID').value" failed. (org.mule.api.expression.ExpressionRuntimeException). Message payload is of type: String Code : MULE_ERROR--2 -------------------------------------------------------------------------------- Exception stack is: 1. [Error: unexpected token: 37] [Near : {... @tc == '37']/@OriginatingObjec ....}] ^ [Line: 1, Column: 96] (org.mvel2.CompileException) org.mvel2.compiler.ExpressionCompiler:247 (null) 2. Execution of the expression "xpath('//acord:TXLife/acord:TXLifeRequest/acord:OLifE/acord:Relation[acord:RelationRoleCode/@tc == '37']/@OriginatingObjectID').value" failed. (org.mule.api.expression.ExpressionRuntimeException) org.mule.el.mvel.MVELExpressionLanguage:211 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/expression/ExpressionRuntimeException.html) 3. Execution of the expression "xpath('//acord:TXLife/acord:TXLifeRequest/acord:OLifE/acord:Relation[acord:RelationRoleCode/@tc == '37']/@OriginatingObjectID').value" failed. (org.mule.api.expression.ExpressionRuntimeException). Message payload is of type: String (org.mule.api.transformer.TransformerMessagingException) org.mule.transformer.AbstractTransformer:123 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/TransformerMessagingException.html)
I have my second XPATH expression in question which is also failing. Please help me get around this as well
The error comes from the fact you use a '
inside a string delimited by '
, which can not work. For example in the following expression the issue is around '37'
:
value="#[xpath('//acord:TXLife/acord:TXLifeRequest/acord:OLifE/acord:Relation[acord:RelationRoleCode/@tc = '37']/@OriginatingObjectID').value" />
Another issue is that a closing ]
is missing at the end of the MEL expression.
Try with:
value="#[xpath("//acord:TXLife/acord:TXLifeRequest/acord:OLifE/acord:Relation[acord:RelationRoleCode/@tc = '37']/@OriginatingObjectID").value" />
Looking at your second XPath, I see [@id=$pwaHolding]
. I assume that at this point you are trying to use the pwaHolding
flow variable extracted by the first XPath. This will not work as MVEL does not have string interpolation. You need to instead use concatenation and, by the way, not forget to single quote the value @id
is compared to:
[@id='" + pwaHolding + "']
这篇关于复杂的 Mule XPath 表达式抛出异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!