On Fri, Mar 18, 2011 at 11:25 AM, Willem Jiang <willem.ji...@gmail.com> wrote: > Hi > > I don't think current camel spring configuration support the xpath with the > name space. >
Yes it does. You can use namespaces with xpath in XML DSL. See the xpath wiki page http://camel.apache.org/xpath In fact you must use namespace in the XPath if your XML has namespaces in it. > You can take a look at Java DSL one from here[1] > > [1]https://svn.apache.org/repos/asf/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/xml/XPathNestedNamespaceTest.java > > Willem > > On 3/17/11 12:35 AM, Tom Howe wrote: >> >> Hi, first post here! >> >> We have an instance of apache-activemq running which includes camel. >> >> We are sending some messages to a queue called 'in' that look like this: >> >> <?xml version="1.0" encoding="utf-8"?> >> <mp:command xmlns:mp="http://www.blah/blah" name="submit"> >> <body>...</body> >> </mp:command> >> >> and >> >> <?xml version="1.0" encoding="utf-8"?> >> <mp:event xmlns:mp="http://www.blah/blah" name="status"> >> <body>...</body> >> </mp:event> >> >> We need to route the messages based on their root element name and content >> of @name >> so the above messages need to go to the endpoints called commands.submit >> and >> events.status. >> >> I created the following route to test the @name based matching: >> >> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> >> <route autoStartup="true" inheritErrorHandler="true" id="generalin" >> xmlns:ns2="http://camel.apache.org/schema/web" xmlns=" >> http://camel.apache.org/schema/spring"> >> <from uri="activemq:in"/> >> <choice inheritErrorHandler="true" id="choice1"> >> <when inheritErrorHandler="true"> >> <xpath>//*[contains(@name,"submit")]</xpath> >> <to uri="activemq:commands.submit" inheritErrorHandler="true" >> id="to2"/> >> </when> >> <otherwise inheritErrorHandler="true"> >> <to uri="activemq:lostandfound" inheritErrorHandler="true" >> id="to4"/> >> </otherwise> >> </choice> >> </route> >> >> This route works fine. It routes any messages where name contains 'submit' >> to the right endpoint. >> >> I then tried to modify the route so that it matched<mp:command>. I tried >> changing the xpath to >> >> <xpath>//command[contains(@name,"submit")]</xpath> >> <xpath>//mp:command[contains(@name,"submit")]</xpath> >> >> and neither worked. Also the message did not get routed to anywhere -ie it >> didnt go to lostandfound. >> >> I also tried adding xmlns:mp="http://www.blah/blah" to the<route> part >> of >> the route definition but it was removed when I saved the route. >> >> Any advice appreciated. >> >> Thanks, Tom >> > > > -- > Willem > ---------------------------------- > FuseSource > Web: http://www.fusesource.com > Blog: http://willemjiang.blogspot.com (English) > http://jnn.javaeye.com (Chinese) > Twitter: willemjiang > -- Claus Ibsen ----------------- FuseSource Email: cib...@fusesource.com Web: http://fusesource.com Twitter: davsclaus Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: http://www.manning.com/ibsen/