我正在使用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>
答案 0 :(得分:1)
带命名空间的XML要求正确设置名称空间。
您需要使用以下内容设置命名空间处理程序:
Namespaces ns = new Namespaces("ns3", "http://www.company.com/services/dataobject/v1");
....
xpath("/ns3:orderRequest/ns3:authNumber",ns)
...