2016-04-26 30 views
0

私はWSO2 ESBのAPIを介してアクセスしようとしているSOAPサービスを持っています。SOAP応答の処理

以下は、そのSOAPサービスのメソッドの応答本体です。

<?xml version="1.0" encoding="UTF-8"?> 
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="wom"> 
     <SOAP-ENV:Body> 
      <ns1:OrderResponse> 
      <return> 
       <ResponseHeader> 
        <ResponseCode>1</ResponseCode> 
        <Description>CIR is already exists</Description> 
       </ResponseHeader> 
      </return> 
      </ns1:OrderResponse> 
     </SOAP-ENV:Body> 
    </SOAP-ENV:Envelope> 

そして、上記のxmlレスポンスのBody/OrderResponseにアクセスするために、次のリンクをたどりました。

[https://docs.wso2.com/display/ESB481/Synapse+XPath+Variables#SynapseXPathVariables- $本体] [1]以下

は、私は、プロパティ値を記録しようとしたAPIのoutSequenceタグです。

<outSequence> 
    <log level="custom"> 
     <property xmlns:ns="http://org.apache.synapse/xsd" 
       name="ErrorCode" 
       expression="$body/ns1:OrderResponse" 
       scope="default" 
       type="STRING"/> 
    </log> 
</outSequence> 

私は両方$ボディ/ NS1試してみました:OrderResponse$本体/ OrderResponseをしかしErrorCodeプロパティは、ログにnullです。 しかし、私が試してみると、$ body(これは私が前に述べたxmlの応答と同じです)全体の応答を取ることができます。 OrderResponseのみを取得するにはどうすればよいですか?

答えて

3

NS1は、あなたの財産で定義されていない、としてみてください:あなたはXMLペイロードをしたい場合は

<property xmlns:ns="http://org.apache.synapse/xsd" 
xmlns:ns1="wom" 
name="ErrorCode" 
expression="$body/ns1:OrderResponse" 
scope="default" 
type="STRING"/> 

は、タイプとあなたのプロパティを定義= "OM"