带有 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 元素,无论其命名空间如何。 例如:&#39;//*[local-name()=''test'']/*[local-name()=''one'']/text()=''oneTest''&#39;

希望对您有所帮助!