Mule xpath失败,消息负载类型为:String

Mule xpath失败,消息负载类型为:String,mule,mule-studio,mule-el,Mule,Mule Studio,Mule El,我最近开始在Anypointstudio中使用Mule,当然我经常出错 目前,我正在使用和访问一个SOAP服务,从我得到的SOAP响应中,我想对特定的body元素执行检查 以下是我的流程: <flow name="Send-To-Selligent"> <cxf:jaxws-client wsdlLocation="http://online.vikingdirekt.at/automation/individual.asmx?WSDL"

我最近开始在Anypointstudio中使用Mule,当然我经常出错

目前,我正在使用
访问一个SOAP服务,从我得到的SOAP响应中,我想对特定的body元素执行检查

以下是我的流程:

<flow name="Send-To-Selligent">

    <cxf:jaxws-client
        wsdlLocation="http://online.vikingdirekt.at/automation/individual.asmx?WSDL"
        clientClass="org.tempuri.Individual" port="IndividualSoap" operation="TriggerCampaign"
        enableMuleSoapHeaders="false" doc:name="CXF">
        <cxf:inInterceptors>
            <spring:bean class="org.apache.cxf.interceptor.LoggingInInterceptor" />
        </cxf:inInterceptors>
        <cxf:outInterceptors>
            <spring:bean class="org.apache.cxf.interceptor.LoggingOutInterceptor" />
        </cxf:outInterceptors>
    </cxf:jaxws-client>

    <mulexml:dom-to-xml-transformer
        doc:name="DOM to XML" />

    <http:outbound-endpoint exchange-pattern="request-response"
        address="http://online.vikingdirekt.at/automation/individual.asmx"
        method="POST" doc:name="HTTP">
        <response>
            <object-to-string-transformer />
        </response>
    </http:outbound-endpoint>

    <message-filter onUnaccepted="ExceptionFlow"
        doc:name="SOAP response must be successfull">
        <expression-filter
            expression="#[xpath3('/soap:Envelope/soap:Body/TriggerCampaignResponse/TriggerCampaignResult').text == '0']"
            doc:name="Expression" />
    </message-filter>

</flow>
不幸的是,当流到达
xpath3(…)

我明白了

2015-05-06 15:56:29 WARN  PhaseInterceptorChain:289 - Interceptor for {http://tempuri.org/}Individual#{http://tempuri.org/}TriggerCampaign has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Execution of the expression "xpath3('/soap:Envelope/soap:Body/TriggerCampaignResponse/TriggerCampaignResult').text == '0'" failed. (org.mule.api.expression.ExpressionRuntimeException). Message payload is of type: String
    at org.mule.module.cxf.transport.MuleUniversalConduit$2.handleMessage(MuleUniversalConduit.java:194)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
    at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:531)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:462)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:365)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:318)
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:95)
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134)
    at com.sun.proxy.$Proxy44.triggerCampaign(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.mule.module.cxf.CxfOutboundMessageProcessor.doSendWithProxy(CxfOutboundMessageProcessor.java:185)
    at org.mule.module.cxf.CxfOutboundMessageProcessor.process(CxfOutboundMessageProcessor.java:127)
    at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:24)
    at org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:58)
    at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44)
    at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:94)
    at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:67)
    at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:24)
    at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44)
    at org.mule.processor.AbstractInterceptingMessageProcessorBase.processNext(AbstractInterceptingMessageProcessorBase.java:102)
    at org.mule.interceptor.AbstractEnvelopeInterceptor.process(AbstractEnvelopeInterceptor.java:51)
    at org.mule.processor.AsyncInterceptingMessageProcessor.processNextTimed(AsyncInterceptingMessageProcessor.java:118)
    at org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker$1.process(AsyncInterceptingMessageProcessor.java:189)
    at org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker$1.process(AsyncInterceptingMessageProcessor.java:182)
    at org.mule.execution.ExecuteCallbackInterceptor.execute(ExecuteCallbackInterceptor.java:16)
    at org.mule.execution.HandleExceptionInterceptor.execute(HandleExceptionInterceptor.java:30)
    at org.mule.execution.HandleExceptionInterceptor.execute(HandleExceptionInterceptor.java:14)
    at org.mule.execution.BeginAndResolveTransactionInterceptor.execute(BeginAndResolveTransactionInterceptor.java:54)
    at org.mule.execution.ResolvePreviousTransactionInterceptor.execute(ResolvePreviousTransactionInterceptor.java:44)
    at org.mule.execution.SuspendXaTransactionInterceptor.execute(SuspendXaTransactionInterceptor.java:50)
    at org.mule.execution.ValidateTransactionalStateInterceptor.execute(ValidateTransactionalStateInterceptor.java:40)
    at org.mule.execution.IsolateCurrentTransactionInterceptor.execute(IsolateCurrentTransactionInterceptor.java:41)
    at org.mule.execution.ExternalTransactionInterceptor.execute(ExternalTransactionInterceptor.java:48)
    at org.mule.execution.RethrowExceptionInterceptor.execute(RethrowExceptionInterceptor.java:28)
    at org.mule.execution.RethrowExceptionInterceptor.execute(RethrowExceptionInterceptor.java:13)
    at org.mule.execution.TransactionalErrorHandlingExecutionTemplate.execute(TransactionalErrorHandlingExecutionTemplate.java:109)
    at org.mule.execution.TransactionalErrorHandlingExecutionTemplate.execute(TransactionalErrorHandlingExecutionTemplate.java:30)
    at org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker.doRun(AsyncInterceptingMessageProcessor.java:181)
    at org.mule.work.AbstractMuleEventWork.run(AbstractMuleEventWork.java:39)
    at org.mule.work.WorkerContext.run(WorkerContext.java:286)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.mule.api.MessagingException: Execution of the expression "xpath3('/soap:Envelope/soap:Body/TriggerCampaignResponse/TriggerCampaignResult').text == '0'" failed. (org.mule.api.expression.ExpressionRuntimeException). Message payload is of type: String
    at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:32)
    at org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:58)
    at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44)
    at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:94)
    at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:67)
    at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:24)
    at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44)
    at org.mule.processor.AbstractInterceptingMessageProcessorBase.processNext(AbstractInterceptingMessageProcessorBase.java:102)
    at org.mule.processor.AbstractFilteringMessageProcessor.process(AbstractFilteringMessageProcessor.java:40)
    at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:24)
    at org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:58)
    at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44)
    at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:94)
    at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:67)
    at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:24)
    at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44)
    at org.mule.processor.AbstractInterceptingMessageProcessorBase.processNext(AbstractInterceptingMessageProcessorBase.java:102)
    at org.mule.module.cxf.CxfOutboundMessageProcessor.processNext(CxfOutboundMessageProcessor.java:160)
    at org.mule.module.cxf.transport.MuleUniversalConduit.processNext(MuleUniversalConduit.java:345)
    at org.mule.module.cxf.transport.MuleUniversalConduit.dispatchMuleMessage(MuleUniversalConduit.java:248)
    at org.mule.module.cxf.transport.MuleUniversalConduit$2.handleMessage(MuleUniversalConduit.java:190)
    ... 45 more
Caused by: org.mule.api.expression.ExpressionRuntimeException: Execution of the expression "xpath3('/soap:Envelope/soap:Body/TriggerCampaignResponse/TriggerCampaignResult').text == '0'" failed.
    at org.mule.el.mvel.MVELExpressionLanguage.evaluateInternal(MVELExpressionLanguage.java:202)
    at org.mule.el.mvel.MVELExpressionLanguage.evaluate(MVELExpressionLanguage.java:183)
    at org.mule.el.mvel.MVELExpressionLanguage.evaluate(MVELExpressionLanguage.java:161)
    at org.mule.expression.DefaultExpressionManager.evaluate(DefaultExpressionManager.java:229)
    at org.mule.expression.DefaultExpressionManager.evaluateBoolean(DefaultExpressionManager.java:356)
    at org.mule.routing.filters.ExpressionFilter.accept(ExpressionFilter.java:123)
    at org.mule.routing.MessageFilter.accept(MessageFilter.java:85)
    at org.mule.processor.AbstractFilteringMessageProcessor.process(AbstractFilteringMessageProcessor.java:38)
    at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:24)
    ... 65 more
Caused by: [Error: null pointer or function not found: xpath3]
[Near : {... xpath3('/soap:Envelope/soap:Bo ....}]
             ^
[Line: 1, Column: 1]
    at org.mule.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:1028)
    at org.mule.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:993)
    at org.mule.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:343)
    at org.mule.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:140)
    at org.mule.mvel2.ast.ASTNode.optimize(ASTNode.java:159)
    at org.mule.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:115)
    at org.mule.mvel2.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:112)
    at org.mule.mvel2.MVELRuntime.execute(MVELRuntime.java:86)
    at org.mule.mvel2.compiler.CompiledExpression.getDirectValue(CompiledExpression.java:123)
    at org.mule.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:119)
    at org.mule.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:113)
    at org.mule.mvel2.MVEL.executeExpression(MVEL.java:943)
    at org.mule.el.mvel.MVELExpressionExecutor.execute(MVELExpressionExecutor.java:72)
    at org.mule.el.mvel.MVELExpressionLanguage.evaluateInternal(MVELExpressionLanguage.java:198)
    ... 73 more
2015-05-06 15:56:31 ERROR CatchMessagingExceptionStrategy:337 - 
********************************************************************************
Message               : Execution of the expression "xpath3('/soap:Envelope/soap:Body/TriggerCampaignResponse/TriggerCampaignResult').text == '0'" failed. (org.mule.api.expression.ExpressionRuntimeException). Message payload is of type: String
Code                  : MULE_ERROR--2
--------------------------------------------------------------------------------
Exception stack is:
1. [Error: null pointer or function not found: xpath3]
[Near : {... xpath3('/soap:Envelope/soap:Bo ....}]
             ^
[Line: 1, Column: 1] (org.mule.mvel2.PropertyAccessException)
  org.mule.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer:1028 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/mvel2/PropertyAccessException.html)
2. Execution of the expression "xpath3('/soap:Envelope/soap:Body/TriggerCampaignResponse/TriggerCampaignResult').text == '0'" failed. (org.mule.api.expression.ExpressionRuntimeException)
  org.mule.el.mvel.MVELExpressionLanguage:202 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/expression/ExpressionRuntimeException.html)
3. Execution of the expression "xpath3('/soap:Envelope/soap:Body/TriggerCampaignResponse/TriggerCampaignResult').text == '0'" failed. (org.mule.api.expression.ExpressionRuntimeException). Message payload is of type: String (org.mule.api.MessagingException)
  org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor:32 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
[Error: null pointer or function not found: xpath3]
[Near : {... xpath3('/soap:Envelope/soap:Bo ....}]
             ^
[Line: 1, Column: 1]
    at org.mule.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:1028)
    at org.mule.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:993)
    at org.mule.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:343)
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************
根据字符串输入应该可以

有什么想法吗


谢谢

错误的根本原因是:

Error: null pointer or function not found: xpath3
因此,这与有效负载是字符串无关,而是与Mule不将
xpath3
识别为有效函数这一事实有关


XPath 3已添加到Mule 3.6.0中,因此请确保在此版本的运行时上运行应用程序。

如David所述,根本原因将与xpath3符号有关


将xpath3更改为xpath后,请确保必须在流中使用前缀“soap”和targeturi来命名空间管理器。

能否在调试中运行应用程序并检查xpath表达式


还注意到您仍在使用表达式中的xpath3。

您使用的是哪个Mule版本?@Anirbanshowdhary Mule 3.5.2我尝试了您所说的。我将
放在流之前,并更改为
expression=“#[xpath3('/soap:Envelope/soap:Body/triggerActivationResponse/triggerActivationResult')。text='0']”doc:name=“expression”/>
但是现在得到的
是由以下原因引起的:org.mule.mvel2.optimizers.impl.refl.reflectAccessorOptimizer.compilegeChain(reflectAccessorOptimizer.java:363)
Error: null pointer or function not found: xpath3