0

我有骡子有效载荷,其中包含 3 种不同的肥皂请求消息。如何使用 MEL 读取第二个肥皂请求中存在的 xml 标记/节点之一的值?

例如消息有效负载如下

[
<soap:Envelope>
    <book>
        <name>ABC</name>
        <author>ABCD</author>
    </book>
    <book>
        <name>WXY</name>
        <author>WXYZ</author>
    </book>
<soap:Envelope> ,
<soap:Envelope>
    <fruit>
        <name>Apple</name>
        <color>Red</author>
    </fruit>
    <fruit>
        <name>Orange</name>
        <color>Orange</author>
    </fruit>
<soap:Envelope> ,
<soap:Envelope>
<soap:Envelope> 
]

我想使用 xpath 和 MEL 读取“所有水果的名称”的值。

4

2 回答 2

1

如果有效负载是包含 XML 的每个元素的 String 数组,则可以执行以下操作:

#[xpath('xpath expression', payload[1])]
于 2013-07-19T13:13:33.380 回答
0

但是,在您的示例中可能存在复制和粘贴错误

<color>Orange</author>

永远不会工作

但是,假设您的意思是 xml 类似于:

<soap:Envelope>
<fruit>
    <name>Apple</name>
    <color>Red</color>
</fruit>
<fruit>
    <name>Orange</name>
    <color>Orange</color>
</fruit>
</soap:Envelope> 

那么您可以使用 Mvel [xpath://fruit[1]/name/text()] 获取单个 xpath 项目或 [xpath://fruit/name/text()] 获取所有

一个测试 xpath 查询的好站点是: http ://chris.photobooks.com/xml/default.htm

于 2013-07-19T09:55:06.553 回答