You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »

XPath

Camel supports XPath to allow an Expression or Predicate to be used in the DSL or Xml Configuration. For example you could use XPath to create an Predicate in a Message Filter or as an Expression for a Recipient List.

From 1.3 of Camel onwards you can use expressions directly using smart completion in your IDE as follows

from("queue:foo").filter().
  xpath("//foo")).
  to("queue:bar")

In earlier versions of Camel you had to use the XPathBuilder methods then you can use the xpath() function inside your rules.

import static org.apache.camel.builder.xpath.XPathBuilder.*;
...
from("queue:foo").filter(xpath("//foo")).to("queue:bar")

Namespaces

In 1.3 onwards you can easily use namespaces with XPath expressions using the Namespaces helper class.

Namespaces ns = new Namespaces("c", "http://acme.com/cheese");

from("direct:start").filter().
    xpath("/c:person[@name='James']", ns).
    to("mock:result");

Examples

Here is a simple example using an XPath expression as a predicate in a Message Filter

Error formatting macro: snippet: java.lang.NullPointerException

If you have a standard set of namespaces you wish to work with and wish to share them across many different XPath expressions you can use the NamespaceBuilder as shown in this example

Error formatting macro: snippet: java.lang.NullPointerException
  • No labels