带有 xpath 和命名空间的 ActiveMQ 选择器表达式
ActiveMQ selector expression with xpath and namespace
我需要使用带有命名空间和前缀的 xpath 创建 jms 消息过滤器选择器。
下面的 xml message/payload 这个 xpath 表达式 XPATH '//test/one/text()=''oneTest'''
对我来说工作正常。
<test>
<one>oneTest</one>
<two>twoTest</two>
</test>
但如果我的 xml 消息具有如下命名空间和前缀,我将无法编写 xpath 表达式。
<es:EnterpriseMessage
xmlns:es="http://schemas.umusic.com/enterprise/services/2014/05">
<es:EnterpriseHeader>
<es:MessageId>123</es:MessageId>
</es:EnterpriseHeader>
我需要编写一个带有命名空间的 jms 过滤器选择器 xpath 表达式,例如如果 MessageId 元素具有“123”,则只有 jms 消费者应该处理该消息。
有人可以告诉我如何使用带命名空间的 xpath 编写 AcitveMQ jms 选择器表达式吗?
我认为您可以使用 local-name()='elementName' 来 select 元素,无论其命名空间如何。
例如:'//*[local-name()=''test'']/*[local-name()=''one'']/text()=''oneTest'''
希望对您有所帮助!
我需要使用带有命名空间和前缀的 xpath 创建 jms 消息过滤器选择器。
下面的 xml message/payload 这个 xpath 表达式 XPATH '//test/one/text()=''oneTest'''
对我来说工作正常。
<test>
<one>oneTest</one>
<two>twoTest</two>
</test>
但如果我的 xml 消息具有如下命名空间和前缀,我将无法编写 xpath 表达式。
<es:EnterpriseMessage
xmlns:es="http://schemas.umusic.com/enterprise/services/2014/05">
<es:EnterpriseHeader>
<es:MessageId>123</es:MessageId>
</es:EnterpriseHeader>
我需要编写一个带有命名空间的 jms 过滤器选择器 xpath 表达式,例如如果 MessageId 元素具有“123”,则只有 jms 消费者应该处理该消息。
有人可以告诉我如何使用带命名空间的 xpath 编写 AcitveMQ jms 选择器表达式吗?
我认为您可以使用 local-name()='elementName' 来 select 元素,无论其命名空间如何。
例如:'//*[local-name()=''test'']/*[local-name()=''one'']/text()=''oneTest'''
希望对您有所帮助!