代理服务WSO2 ESB中的默认命名空间和前缀

时间:2012-10-29 03:00:41

标签: wso2 wso2esb

我正在WSO2 ESB中开发代理服务。

使用此配置,我将检索xml Web服务响应。响应使用默认命名空间,如下所示:

<enrich>
<source type="body" clone="true" />
<target type="property" property="soapXmlResponseReadCahceDataService" />
</enrich>

这是xml响应:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body>
<cacheServices **xmlns="http://cache.services"**>
<cacheService>
   <id>1</id>
   <xmlrequesthash>b1e97b67-1226-4b1d-9081-b2a140690efd</xmlrequesthash>
   <xmlrequestpayload>c</xmlrequestpayload>
   <xmlresponsepayload>d</xmlresponsepayload>
   <quantity>1</quantity>
   </cacheService>
</cacheServices>
</soapenv:Body> </soapenv:Envelope>

此后我需要获得元素数量

<property xmlns="http://cache.services" name="count" expression="//cacheServices/cacheService/quantity" />

WSO2 ESB不允许您放置没有前缀的命名空间,但我无法获取此值。我可以做到获取此值,因为xml响应没有名称空间前缀?

1 个答案:

答案 0 :(得分:0)

你能在属性调解器中尝试这个xpath吗?

 <property name="count" expression="//*[name()='cacheServices']/*[name()='cacheService']/*[name()='quantity']" scope="default" type="STRING"/>

或者,您可以通过添加任何名称空间前缀来使用它,因为您使用的是默认名称空间。

 <property xmlns:ns1="http://cache.services" name="count" expression="//ns1:cacheServices/ns1:cacheService/ns1:quantity" scope="default" type="STRING"/>