如何在WSO2 esb中使用xpath获取xml子节点

时间:2016-03-02 21:55:07

标签: java xml xpath wso2 wso2esb

我有一个xml有效负载,如下所示,

<ret:msgData xmlns:ret="http://example.com/ret" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <users>
        <fbuser>user1</fbuser>
        <fbuser>user2</fbuser>
        <googleuser>user2</googleuser>
    </users>
</ret:msgData>

从这个有效载荷我需要所有的fbuser节点。 为此我在esb中的属性mediator中使用了xpath。 但它给了我价值而不是节点。

 <property xmlns:ret="http://example.com/ret"
           name="fbuser"
           expression="//ret:msgData/users/fbuser"
           scope="default"
           type="STRING"/>
 <log level="custom" separator=",">
    <property name="fbuser" expression="get-property('fbuser')"/>
 </log>

打印的输出是user1user2 相反,我正在寻找输出如下。

<fbuser>user1</fbuser>
<fbuser>user2</fbuser>

当我在http://www.freeformatter.com/xpath-tester.html中测试xpath时 相同的代码给了我正确的输出。

请建议。

1 个答案:

答案 0 :(得分:0)

老实说,使用XSLT可以更好地解决这个问题,XSLT用于将XML从一个应用程序提取/转换为另一个应用程序。