Hon*_*nAn 1 apache-camel content-based-retrieval
我需要在 Apache Camel 路线中询问操作员“选择时间”的问题。在以下示例中,如果我有两个具有 1, 2 值的 soap-env:Order 元素,那么我想创建两个名为 output_1.xml 和 output_2.xml 的 xml 文件。但是,代码只能创建一个文件output_1.xml。谁能给我任何想法或提示?谢谢你的帮助。
public void configure() {
...
from("direct:a")
.choice()
.when(ns.xpath("//soap-env:Envelope//soap-env:Order='1'"))
.to("file://data?fileName=output_1.xml")
.when(ns.xpath("//soap-env:Envelope//soap-env:Order='2'"))
.to("file://data?fileName=output_2.xml")
.when(ns.xpath("//soap-env:Envelope//soap-env:Order='3'"))
.to("file://data?fileName=output_3.xml")
}
Run Code Online (Sandbox Code Playgroud)
我的理解是基于内容的路由器实现了“if - else if - else”语义,这意味着只要一个测试评估为真,其余的测试就会被跳过。如果要为每个返回 true 的情况创建文件,则必须将路由更改为如下所示:
from("direct:a")
.choice()
.when(ns.xpath("//soap-env:Envelope//soap-env:Order='1'"))
.to("file://data?fileName=output_1.xml")
.end()
.choice()
.when(ns.xpath("//soap-env:Envelope//soap-env:Order='2'"))
.to("file://data?fileName=output_2.xml")
.end()
.choice()
.when(ns.xpath("//soap-env:Envelope//soap-env:Order='3'"))
.to("file://data?fileName=output_3.xml")
.end()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5351 次 |
| 最近记录: |