我有以下代码:
<property name="resultOM" scope="default" type="OM">
<test><test1>testing111</test1></test>
</property>
<log level="full">
<property name="ROOT" expression="$ctx:resultOM" />
<property name="resultOM.test" expression="$ctx:resultOM//test1" />
</log>
那么我希望在日志中看到值ROOT = testing111resultOM。Test = testing111
,虽然ROOT值是可以的,但是resultOM的值。Test为空。检索子值的正确xpath应该是什么?使用的WSO2ESB版本为4.5.1。
在创建OM类型属性时定义默认命名空间(http://ws.apache.org/ns/synapse)。因此需要对名称空间执行xpath表达式。试试这个,
<log level="full">
<property name="ROOT" expression="$ctx:resultOM"/>
<property name="resultOM.test" xmlns:ns="http://ws.apache.org/ns/synapse" expression="$ctx:resultOM//ns:test1"/>
</log>
阅读[1]了解更多细节。
[1] http://isharapremadasa.blogspot.com/2014/08/wso2-esb-property-mediator-performing.html