我有一个标题,其中包含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>
阅读docs它似乎可以使用标题值作为表达式的一部分,但不能定义整个事物?我尝试了这个并没有用:
<xpath resultType="org.w3c.dom.NodeList">in:header('myXPath')</xpath>
任何人都知道这样做的方法吗?我发现这个bug看起来像我想要的那样,但它不会被修复到3.0: https://issues.apache.org/jira/browse/CAMEL-3697
答案 0 :(得分:1)
与Camel几乎一样,当DSL受限于您的情况时,您可以切换到在普通Java处理器/ bean中执行此特定部分。
您可以使用XPathBuilder执行表达式并手动检索标题。
伪码:
String result = XPathBuilder.xpath(exchange.getIn().getHeader("myXpath",String.class)).evaluate(context, exchange.getIn().getBody());
答案 1 :(得分:1)
在Camel 2.11中,这更容易,因为您可以直接在标头上执行xpath。请参阅<{3>}部分在标题上使用XPath
部分中的文档