作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个输入 SOAP XML,如下所示:-
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://services.test.com/schema/MainData/V1">
<soapenv:Header>
</soapenv:Header>
<soapenv:Body>
<v1:retrieveDataRequest>
<v1:Id>662</v1:Id>
</v1:retrieveDataRequest>
</soapenv:Body>
</soapenv:Envelope>
现在我的问题很简单......
如何在 Mule 中使用 XPATH 函数,如 count()、name()、substring() 等
我想在此 SOAP 请求上使用 XPATH,如下所示:-
<logger message="#[xpath('count(//v1:retrieveDataRequest/v1:Id)')]" level="INFO" doc:name="Logger"/>
但是它抛出以下异常:-
Exception stack is:
1. No Such Function {http://www.mulesoft.org/schema/mule/core}:count (org.jaxen.UnresolvableException)
org.jaxen.SimpleFunctionContext:127 (null)
2. Failed to evaluate XPath expression: "count(//v1:retrieveDataRequest/v1:Id)" (org.mule.api.MuleRuntimeException)
org.mule.module.xml.expression.AbstractXPathExpressionEvaluator:141 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MuleRuntimeException.html)
3. org.mule.api.MuleRuntimeException: Failed to evaluate XPath expression: "count(//v1:retrieveDataRequest/v1:Id)" (java.lang.RuntimeException)
org.mule.module.xml.el.XPathFunction:70 (null)
4. [Error: org.mule.api.MuleRuntimeException: Failed to evaluate XPath expression: "count(//v1:retrieveDataRequest/v1:Id)"]
[Near : {... xpath('count(//v1:retrieveData ....}]
^
[Line: 1, Column: 1] (org.mule.mvel2.CompileException)
org.mule.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer:437 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/mvel2/CompileException.html)
5. Execution of the expression "xpath('count(//v1:retrieveDataRequest/v1:Id)')" 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)
6. Execution of the expression "xpath('count(//v1:retrieveDataRequest/v1:Id)')" 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:
org.jaxen.UnresolvableException: No Such Function {http://www.mulesoft.org/schema/mule/core}:count
at org.jaxen.SimpleFunctionContext.getFunction(SimpleFunctionContext.java:127)
at org.jaxen.ContextSupport.getFunction(ContextSupport.java:242)
at org.jaxen.Context.getFunction(Context.java:216)
+ 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
请注意:-我已经使用了Mule命名空间管理器,如下所示:-
<mulexml:namespace-manager includeConfigNamespaces="true">
<mulexml:namespace prefix="soapenv" uri="http://schemas.xmlsoap.org/soap/envelope/"/>
<mulexml:namespace prefix="v1" uri="http://services.test.com/schema/MainData/V1"/>
</mulexml:namespace-manager>
我得到以下结果:- <logger message="#[xpath('//v1:retrieveDataRequest/v1:Id').text]" level="INFO" doc:name="Logger"/>
请帮忙
最佳答案
上面未显示的异常的相关部分是:
Root Exception stack trace:org.jaxen.UnresolvableException: No Such Function {http://www.mulesoft.org/schema/mule/core}:countat org.jaxen.SimpleFunctionContext.getFunction(SimpleFunctionContext.java:127)at org.jaxen.ContextSupport.getFunction(ContextSupport.java:242)at org.jaxen.Context.getFunction(Context.java:216) + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
如您所见,count
XPath 函数是在 Mule 命名空间中计算的。这是在 namespace-manager
中使用 includeConfigNamespaces="true"
的副作用。您似乎不需要 Mule 命名空间来评估您的 XPath(您没有在 SOAP 消息中使用任何 Mule 命名空间),因此您应该将此值设置为 false。
这将在 Mule 3.6 中修复,根据 MULE-7030 .
关于xml - 如何在 Mule 中使用 XPATH 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26956667/
我是一名优秀的程序员,十分优秀!