Oh, I haven't seen that you want to have a common root element <Route>. After splitting the xml you could simply add that element:
Jan @Test public void split() throws InterruptedException, IOException { mock.expectedMessageCount(2); mock.expectedMessagesMatches( or( bodyAs(String.class).contains("42"), bodyAs(String.class).contains("Jan") ), bodyAs(String.class).contains("<Route>") ); ... @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { @Override public void configure() throws Exception { from("direct:split") .split(xpath("/Route/*")) .setBody(simple("<Route>${body}</Route>")) .to("mock:end"); } }; } > -----Ursprüngliche Nachricht----- > Von: Jan Matèrne (jhm) [mailto:apa...@materne.de] > Gesendet: Dienstag, 19. November 2013 17:50 > An: users@camel.apache.org > Betreff: AW: Splitting up XML into 2 XMLs > > The trick is using the right xpath. Here use a wildcard "/Route/*". > > > Jan > > > package de.materne.camel.sandbox.split; > > import static org.apache.camel.builder.PredicateBuilder.or; > > import java.io.IOException; > > import org.apache.camel.EndpointInject; > import org.apache.camel.builder.RouteBuilder; > import org.apache.camel.component.mock.MockEndpoint; > import org.apache.camel.test.junit4.CamelTestSupport; > import org.junit.Test; > > public class SplitTest extends CamelTestSupport { > > @EndpointInject(uri="mock:end") > MockEndpoint mock; > > @Test > public void split() throws InterruptedException, IOException { > mock.expectedMessageCount(2); > mock.expectedMessagesMatches( > or( > bodyAs(String.class).contains("42"), > bodyAs(String.class).contains("Jan") > ) > ); > String xml = createXml(); > template.sendBody("direct:split", xml); > mock.assertIsSatisfied(); > } > > private String createXml() { > StringBuilder xml = new StringBuilder(); > xml.append("<Route>"); > xml.append(" <Account><number>42</number></Account>"); > xml.append(" <Person><name>Jan</name></Person>"); > xml.append("</Route>"); > return xml.toString(); > } > > @Override > protected RouteBuilder createRouteBuilder() throws Exception { > return new RouteBuilder() { > @Override > public void configure() throws Exception { > from("direct:split") > .split(xpath("/Route/*")) > .to("mock:end"); > } > }; > } > }