XPath作为字符串变量/属性

时间:2019-01-30 00:20:10

标签: xpath wso2 wso2esb synapse

我从数据库中检索XPath(通过DSS),并且需要将其应用于主体。这可能吗?

举个例子,假设我有这个xml请求

<custom>
    <id>24</id>
    <text>Some Text</text>
    <firstOccurId>123456</firstOccurId>
    <secondOccurId>654321</secondOccurId>
</custom>

我拿着ID(24)和呼叫模板,它将返回

<replacements>
    <row>
        <value>ABCDEFG</value>
        <xpath>/*/custom/firstOccurId</xpath>
    </row>
    <row>
        <value>GFEDCDBA</value>
        <xpath>/*/custom/secondOccurId</xpath>
    </row>
</replacements>

现在我需要将xpath应用于请求并更改其值,因此转换后的请求主体看起来像这样

<custom>
    <id>24</id>
    <text>Some Text</text>
    <firstOccurId>ABCDEFG</firstOccurId>
    <secondOccurId>GFEDCDBA</secondOccurId>
</custom>

我尝试了两个validate()并将XPath字符串放在“呼叫模板”调解器的{{}}中,但是都没有成功。

1 个答案:

答案 0 :(得分:0)

evaluate()是正确的答案。更具体地说,在此示例中,我需要将custom请求存储在属性中,获取replacements,遍历它们,在此循环中,我需要在属性中将完整的xpath存储为fn:concat('$body', //el:row/el:xpath, '/text()'),使用原始有效负载丰富主体,并将存储的xpath应用于evaluate()