我正在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响应没有名称空间前缀?
答案 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"/>