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 XPath 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
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