我有JDBC,我在调用存储过程,它返回响应如下,但我不确定如何提取结果集的值
请查看DB的回复
{updateCount1=4,resultSet1=[{XML_F5RYI-11YTR=<Customers><Customer1>John<Customer1><Customer2>Ganesh<Customer2><Customers>}],resultSet2[{SequenceNumber=94}],updateCount2=1, updateCount3=4}
我使用了这个表达式#[message.payload.get(0)]
,它返回了如下所示的ResultSet,但不完全是必需的值。我需要获取XML_F5RYI-11YTR的xml值。
{XML_F5RYI-11YTR=<Customers><Customer1>John<Customer1><Customer2>Ganesh<Customer2><Customers>}
也尝试如下
#[message.payload.get(0).XML_F5RYI-11YTR]
但是收到错误,无法提取xml。
您能否建议我如何从ResultSet1中提取xml
答案 0 :(得分:2)
在大多数情况下,你的方式应该有效。我认为这里发生的是列名称中的连字符被MEL解析器解释为减法。所以你可以改变你的语法,它应该工作:
#[message.payload.get(0)['XML_F5RYI-11YTR']]
此外,您可以省略&#34; message&#34;,因为有效负载可以直接解析:
#[payload.get(0)['XML_F5RYI-11YTR']]
您可以使用数组括号语法来访问结果集中的第一行,而不是get方法:
#[payload[0]['XML_F5RYI-11YTR']]
最后,您可能希望为从数据库返回的每一行执行某些操作。如果使用集合拆分器或for-each,则有效负载将是表示行的映射,而不是表示整个结果集的映射列表:
<collection-splitter />
<logger message="#[payload['XML_F5RYI-11YTR']]" />
修改强>
要访问问题中显示的有效负载中的结果集,您需要像这样访问它:
#[payload.resultSet1[0]['XML_F5RYI-11YTR']]
答案 1 :(得分:0)
数据库连接器为您提供了一个地图列表。地图键将是列的名称。因此,如果您想获得updateCount1,可以使用以下内容:
#[payload.get('updateCount1')]"
答案 2 :(得分:0)
Thump规则 - 您的数据库连接器为您提供了地图列表,不确定它的格式是什么,如果您想要XML_F5RYI ..值,请执行以下操作