WSO2 ESB Xpath和获取子节点

时间:2014-08-12 11:13:16

标签: xpath wso2 wso2esb

我正在使用有效负载工厂,我想选择父节点的所有子节点。问题是当我使用不同的Xpath表达式选择所有子节点时,它返回值但没有节点。

所以而不是得到我想要的东西

    <child1>value1</child1>
    <child2>value2</child2>
    <child3>value3</child3>

我收到了这个

value1value2value3

到目前为止我尝试过的不同Xpath表达式是

parent/child::node()
parent/node()
parent//*

1 个答案:

答案 0 :(得分:1)

如果您引用叶节点,您将获得它们的值。 如果您引用具有子节点的节点,您将获得xml片段。

输入讯息:

<parent>
  <child>value1</child>
  <child>value2</child>
  <child>value3</child>
</parent>

Payload工厂:

<payloadFactory media-type="xml">
<format>
      <result xmlns="">
        $1
      </result>
</format>
<args>
   <arg evaluator="xml" expression="//parent"/>
</args>
</payloadFactory>

结果:

<result>
  <parent>
    <child>value1</child>
    <child>value2</child>
    <child>value3</child>
  </parent>
</result>

Payload工厂:

...
<arg evaluator="xml" expression="//child"/>
...

结果:

<result>value1value2value3</result>

不知道如何使用payloadFactory解决这个问题,但您可以使用XSLT或javascript

使用javascript的示例:

<script language="js"><![CDATA[
  mc.setPayloadXML(<result>{mc.getPayloadXML()..*::child}</result>);
]]></script>