我定义了一个简单的camel路由,它将使用xml消息。
路线如下:
from("from-endpoint").bean(myBean, "method1").log("$body")to("to-endpoint)
bean的定义如下:
class MyBean {
public void method1(String value) {
//so something with value
}
}
示例xml消息如下:
<name>
<value>new value<value>
</name>
我想检索属性值#34;值&#34;并将其传递给我的bean方法。我想在我的路由中检索属性值,并保持我的bean实现清除对xml结构的引用。我还想确保路由仍然传播原始主体,因此我不希望在其上面有一个bean从XML中提取值并将其传递到下游。
希望明白。
答案 0 :(得分:2)
在将其发送到bean之前,您可以使用值
设置标头.setHeader("value", xpath("/name/value/text()"))
然后
class MyBean {
public void method1(Exchange exchange) {
System.out.println("MyBean - " + exchange.getIn().getHeader("value", String.class));
}
}
答案 1 :(得分:1)
class MyBean implements Processor {
public void method1(Exchange exchange)throws Exception {
Foo foo = exchange.getIn().getBody(foo.class);
value = foo.getvalue();
//so something with value
}
}
答案 2 :(得分:1)
class MyBean implements Processor {
@override
public void process(Exchange exchange)throws Exception {
Foo foo = exchange.getIn().getBody(foo.class);
value = foo.getvalue();
}
}
答案 3 :(得分:0)
如果您不希望在传入的有效负载中执行任何类型的XML函数,那么您可以使用JAXB或XStream解析器解组传入的有效负载,然后您将使用POJO而不是XML操作。如果您没有在交换机构中设置任何内容,那么在您的路线中,有效负载将保持不变。