如何从驼峰体中检索特定内容以传递给驼峰路径中的bean方法?

时间:2015-09-07 11:12:35

标签: xpath apache-camel

我定义了一个简单的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中提取值并将其传递到下游。

希望明白。

4 个答案:

答案 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操作。如果您没有在交换机构中设置任何内容,那么在您的路线中,有效负载将保持不变。