2016-11-29 8 views
1

私はarg0の値を取得したいと思います。 これは私のコードMuleのXpathを使ってSOAPメッセージから値を取得

<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> 

であり、これは私が値を取得しようとしている方法です。「

<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> 

しかし、私は次のことができます。その前に

<logger message="#[xpath3('/*/soapenv:Envelope/soapenv:Body/sup:invoke/sup:arg0',payload, 'NODESET')]" level="INFO" doc:name="Logger"/> 

を私はこれらの名前空間を宣言しましたこのエラーが表示されます:

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 誰かが私を助けることができたらうれしいです! ありがとう!

答えて

1

最後に、私はarg0の値を取得する方法を見つけました。

xpath3の前にdom-to-xml-transformerを宣言しなければなりませんでした。 また、xpath3のクエリで使用するために、prefix = "sup"の名前空間を宣言しました。ここで

は、コードは次のとおりです。

// 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。

関連する問題