Hello,

while trying to parse xml outside a camel route using xpath (as
described here :
http://camel.apache.org/xpath.html#XPath-UsingXPathBuilderwithoutanExchange),
I met an issue while trying to set the type of the return.
It seems that if you use the setResultType(Class<T> resultType) before
the evaluate, it will use the type correclty but will only return the
first element. But if you use evaluate(CamelContext context, Object
body, Class<T> type), it will return all elements at once.

I included a short snippet illustrating the issue I encountered :

    CamelContext cc = new DefaultCamelContext();
    String xml = "<xml><a>1</a><a>2</a></xml>";
    XPathBuilder xpb = new XPathBuilder("/xml/a/text()");
    System.out.println(xpb.evaluate(cc, xml, String.class));
    xpb.setResultType(String.class);
    System.out.println(xpb.evaluate(cc, xml));

String.class can be replaced by List.class and will return a List with
2 elements in the first case, and a null in the second.

I encountered this behaviour in Camel 2.15.2 and wanted to know if
it's a normal behaviour and I missed a way to set the result type
outside of the evaluate method and still get all nodes in one call.

Reply via email to