1

我有一个标头,其中包含 XPath 定义:

myXPath = "/bookshop/author/books/1|/bookshop/author/books/2"

然后我想在 Xpath 表达式中使用它来设置另一个标题,如下所示:

<setHeader headerName="authorBooks">
    <xpath resultType="org.w3c.dom.NodeList">${in.header.myXPath}</xpath>
</setHeader>

阅读文档,您似乎可以将标头值用作表达式的一部分,但不能定义整个内容?我试过这个,但没有奏效:

<xpath resultType="org.w3c.dom.NodeList">in:header('myXPath')</xpath>

有人知道这样做的方法吗?我发现这个错误似乎可以满足我的要求,但要到 3.0 才能修复: https ://issues.apache.org/jira/browse/CAMEL-3697

4

2 回答 2

1

与 Camel 几乎一样,当 DSL 受限于您的情况时,您可以切换到在普通 Java 处理器/bean 中执行此特定部分。

您可以使用XPathBuilder来执行您的表达式并手动检索标题。

伪代码:

 String result = XPathBuilder.xpath(exchange.getIn().getHeader("myXpath",String.class)).evaluate(context, exchange.getIn().getBody());
于 2013-04-02T05:40:24.307 回答
1

在 Camel 2.11 中,这更容易,因为您可以直接在标头上执行 xpath。请参阅在 Headers 上使用 XPath部分的官方文档

于 2013-04-02T11:31:52.980 回答