On Tue, Nov 6, 2012 at 1:04 PM, Henrique Viecili <[email protected]> wrote: > Thanks Claus, I will try this solution... > > As a second thought, could this behaviour be added as an enhancement to the > Type Converters or maybe camel-xpath itself? >
Did you find a solution for your problem? The type converters wont really be able to be configured to enable/disalbe this. It would be better as an option to the xpath expression. > > > On Tue, Nov 6, 2012 at 5:17 AM, Claus Ibsen <[email protected]> wrote: > >> Hi >> >> You are under the mercy of XPath and what XPathExpression can do. >> As it returns a NodeList which has Node elements, you may be able to >> go from Node -> Document (or whatever the parent type is), and then >> grab any namespaces. You would then need to use the DOM API from the >> JDK for that. >> >> And do this before you do the <convertBodyTo type="String"/> >> >> >> On Mon, Nov 5, 2012 at 9:44 PM, Henrique Viecili <[email protected]> >> wrote: >> > Is there a way to tell the splitter-xpath to copy all parent namespaces >> to >> > the splitted element? >> > >> > This is what I am trying to do: >> > >> > I am trying to split an XML message with XPath, this message has a schema >> > defining an element containing a sequence of xsi:anySimpleType. Creating >> > such message gives me something like: >> > >> > <alpha:root xmlns:alpha="http://test.com/Alpha" xmlns:beta=" >> > http://test.com/Beta"> >> > <alpha:collection> >> > <alpha:item xsi:type="beta:BetaItem" xmlns:xsi=" >> > http://www.w3.org/2001/XMLSchema-instance"> >> > <beta:name>Foo</beta:name> >> > </alpha:item> >> > <alpha:item xsi:type="beta:BetaItem" xmlns:xsi=" >> > http://www.w3.org/2001/XMLSchema-instance"> >> > <beta:name>Bar</beta:name> >> > </alpha:item> >> > </alpha:collection> >> > </alpha:root> >> > >> > >> > my camel route is: >> > >> > <camelContext xmlns:alpha="http://test.com/Alpha" xmlns:beta=" >> > http://test.com/Beta" > >> > <route> >> > <from uri="..."/> >> > <split> >> > <xpath>//alpha:item</xpath> >> > <convertBodyTo type="java.lang.String"/> >> > <to uri="log:output-missing-beta-namespace"/> >> > </split> >> > </route> >> > </camelContext> >> > >> > >> > feeding this route with the previous XML gives me 2 pieces of invalid XML >> > messages without the 'beta' namespace defined in the root element: >> > >> > <alpha:item xmlns:alpha="http://test.com/Alpha" xsi:type="beta:BetaItem" >> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> >> > <beta:name>Foo</beta:name> >> > </alpha:item> >> > >> > So, Is there a way to tell the splitter-xpath to copy the 'beta' >> namespace >> > from 'root' declaration into the splitted 'alpha:item' element? >> > >> > >> > Thanks >> > *Henrique Viecili* >> >> >> >> -- >> Claus Ibsen >> ----------------- >> Red Hat, Inc. >> FuseSource is now part of Red Hat >> Email: [email protected] >> Web: http://fusesource.com >> Twitter: davsclaus >> Blog: http://davsclaus.com >> Author of Camel in Action: http://www.manning.com/ibsen >> -- Claus Ibsen ----------------- Red Hat, Inc. FuseSource is now part of Red Hat Email: [email protected] Web: http://fusesource.com Twitter: davsclaus Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen
