如何在camel路由中使用xpath设置jms消息自定义标头

时间:2015-07-08 21:14:52

标签: xpath jms apache-camel activemq

我正在使用camel路由构建器通过设置一些自定义标头将一个activemq jms消息从一个队列移动到另一个队列,方法是使用xpath从xml读取节点值。没有设置。如果你知道答案,请建议。

from("activemq:com.queue1")
    .setHeader("orderNumber").xpath("/orderRequest/authNumber")
                    .to("activemq:com.queue2")
            .end();

XML看起来像

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns3:orderRequest xmlns:ns2="http://www.company.com/services/entity/v1" 
                  xmlns:ns3="http://www.company.com/services/dataobject/v1">    
    <authNumber>A81585</authNumber>
</ns3:orderRequest>

1 个答案:

答案 0 :(得分:1)

带命名空间的XML要求正确设置名称空间。

您需要使用以下内容设置命名空间处理程序:

Namespaces ns = new Namespaces("ns3", "http://www.company.com/services/dataobject/v1");

....
xpath("/ns3:orderRequest/ns3:authNumber",ns)
...