使用xpath处理mule中的可选元素

时间:2014-11-24 08:34:03

标签: xpath mule mule-el

所以我试图使用像

这样的xpath表达式将我的SOAP响应保存到数据库
 ...#[xpath('//Person/Name/Firstname').text], #[xpath('//Person/Name/Lastname').text],
#xpath('//Relations/Relation/RelationId/Id').text], #xpath('//Relations/Relation/Relationtype').text])).....

但我想知道如何处理“Relation”元素。它是可选的,如果它存在,它可以存在多次,并且元素可以根据Relation的类型具有不同的名称。 如果它存在,我总是想保存所有这些,所以我想知道最好的办法是什么?

此致

修改

如果元素“Relations”存在,它可以有一个或多个“Relation”元素和具有不同名称的子元素。我不知道如何处理它,也许最好先使用ChoiceRouter来检查是否存在“关系”。如果确实如此,我需要有一个“foreach”,然后进行大量的检查以查看哪些子元素存在,这样我就可以将它们全部保存到数据库中。

1 个答案:

答案 0 :(得分:1)

您可以在单个MEL表达式中对if / else使用三元表达式 供您参考..请查看: - http://mvel.codehaus.org/MVEL+2.0+Control+Flow

例如,以下检查 Relation 元素,如果存在,则提取//Relations/Relation/RelationId/Id或放入其他条件并返回 node.text ...你可以根据您的要求进行修改: -

#[node = xpath('//Relations/Relation') != null ? xpath('//Relations/Relation/RelationId/Id').text : your else condition;node.text;]