2014-11-24 83 views
0

所以我想保存使用XPath表达式我SOAP响应分贝像处理在骡子可选的元素使用XPath

...#[xpath('//Person/Name/Firstname').text], #[xpath('//Person/Name/Lastname').text], 
#xpath('//Relations/Relation/RelationId/Id').text], #xpath('//Relations/Relation/Relationtype').text]))..... 

但我不知道如何处理“关系”的元素。它是可选的,如果它存在,它可以存在多次,并且元素可以具有不同的名称,具体取决于Relation的类型。 如果存在,我总是希望保存所有这些,所以我想知道处理这个问题的最好方法是什么?

问候

编辑

如果元素“关系”存在,它可以有一个或几个“关系”元素,并用不同的名称的子元素。我不知道如何处理它,也许最好先使用ChoiceRouter来检查“关系”是否存在。如果是这样,我需要有一个“foreach”,然后做大量的检查,看看哪些子元素在那里,所以我可以将它们全部保存到数据库中。

+0

请问你米ind更新问题以扩展“保存所有内容”的含义? – 2014-11-25 13:57:47

回答

1

你可以使用三元表达为的if/else在一个单一的MEL表达 ,供您参考。检查PLS这样的: - http://mvel.codehaus.org/MVEL+2.0+Control+Flow

例如下面的检查,如果存在关系元素,它提取//Relations/Relation/RelationId/Id或把你的其他条件并返回node.text ...你可以修改为按您的要求: -

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

谢谢,这似乎是伎俩! – elwis 2014-11-24 09:14:32

+0

那么,至少直到我注意到当它试图检查'//关系'时根本不存在的时候整个事情就会发生;) – elwis 2014-11-24 09:36:40