我想获得arg0的值。 这是我的代码
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sup="http://support.cxf.module.mule.org/">
<soapenv:Header/>
<soapenv:Body>
<sup:invoke name="INVOKE">
<!--Optional:-->
<sup:arg0 name="ARG0">pichon</sup:arg0>
</sup:invoke>
</soapenv:Body>
</soapenv:Envelope>
这就是我试图获得价值的方式:
<logger message="#[xpath3('/*/soapenv:Envelope/soapenv:Body/sup:invoke/sup:arg0',payload, 'NODESET')]" level="INFO" doc:name="Logger"/>
在此之前,我声明了这些名称空间:
<mulexml:namespace-manager includeConfigNamespaces="true">
<mulexml:namespace prefix="soapenv" uri="http://schemas.xmlsoap.org/soap/envelope/"/>
<mulexml:namespace prefix="sup" uri="http://support.cxf.module.mule.org/"/>
</mulexml:namespace-manager>
但我不能,我收到了这个错误:
Caused by: org.mule.api.MessagingException: Execution of the expression "xpath3('/*/soapenv:Envelope/soapenv:Body/sup:invoke/sup:arg0',payload, 'NODESET')" failed. (org.mule.api.expression.ExpressionRuntimeException).
我正在使用mule 3.8和anypoint studio 6.1.2 如果有人能帮助我,我将不胜感激! 谢谢!
答案 0 :(得分:1)
最后,我找到了一个关于获取arg0值的解决方案。
在调用xpath3之前,我必须声明一个dom-to-xml-transformer。 此外,我使用prefix =“sup”声明了名称空间,以便在xpath3中使用查询。
以下是代码:
// declared before the flow
<mulexml:namespace-manager includeConfigNamespaces="true">
<mulexml:namespace prefix="sup" uri="http://support.cxf.module.mule.org/"/>
</mulexml:namespace-manager>
// into the flow
<mulexml:dom-to-xml-transformer doc:name="DOM to XML"/>
<logger message="#[xpath3('/sup:invoke/sup:arg0',payload, 'STRING')]" level="INFO" doc:name="Logger"/>
问候,
Juanfra。