i just created a test that uses your data and verified that it is working fine. please take a look at this file at my dropbox. https://www.dropbox.com/s/pfgvs9si9bvujxo/jmtest.tar.gz?dl=0 just extract the files into camel-core and run JMNewsTest. and see if that works in your environment, (i believe it does).
in that case, we need to find out the difference to your case. do you have woodstox-api in your class path? 2014-12-10 12:15 GMT+01:00 Aki Yoshida <elak...@gmail.com>: > okay. > let me take a look. > > > 2014-12-10 12:02 GMT+01:00 Jan Matèrne (jhm) <apa...@materne.de>: >> No, input is valid xml. >> After invoking xtokenize() the xml is invalid. >> >> CAMEL-8106 is very .... short. I can't see whether it is related. >> >> >> I posted an example on the user list >> http://mail-archives.apache.org/mod_mbox/camel-users/201412.mbox/%3C002b01d01452%24e8ee27a0%24baca76e0%24%40de%3E >> >> I had done a 'workaround' for this special example >> // Workaround of a bug?? in XMLTokenizerExpression >> .setBody(simple("${body.replace('</</news:Newsletter>', >> '</news:Newsletter>')}")) >> .setBody(simple("${body.replace('<</news:Newsletter>', >> '</news:Newsletter>')}")) >> >> Without that the split messages have wrong end tags. >> >> >> Jan >> >> >>> -----Ursprüngliche Nachricht----- >>> Von: Aki Yoshida [mailto:elak...@gmail.com] >>> Gesendet: Mittwoch, 10. Dezember 2014 10:34 >>> An: users@camel.apache.org >>> Betreff: Re: AW: camel - xsd >>> >>> you are talking about the invalid-xml parsing bug in xtokenzier. >>> that has been fixe with CAMEL-8106. It should be part of the new >>> 2.14.1, which is to be released shortly. >>> >>> regards, aki >>> >>> 2014-12-10 9:25 GMT+01:00 Jan Matèrne (jhm) <apa...@materne.de>: >>> > I played a little bit. >>> > >>> > Jan >>> > >>> > >>> > public class XmlTest extends CamelTestSupport { >>> > >>> > @EndpointInject(uri="mock:valid") >>> > MockEndpoint valid; >>> > >>> > @EndpointInject(uri="mock:validationError") >>> > MockEndpoint validationError; >>> > >>> > >>> > >>> > @Test >>> > public void validNewsfeed() throws Exception { >>> > // Newsfeed contains 2 news >>> > valid.expectedMessageCount(2); >>> > valid.expectedMessagesMatches( >>> > // Use helper methods from the static imported >>> PredicateBuilder >>> > and( >>> > header("newsfeed.date").isEqualTo("2014.12.09 >>> 14:15"), >>> > header("news.author").isEqualTo("Jan"), >>> > >>> > >>> body().contains("xmlns:news=\"http://www.materne.de/camel/test/xml/com >>> > plex/\ >>> > "") >>> > ) >>> > ); >>> > // no error expected >>> > validationError.expectedMessageCount(0); >>> > >>> > // Read xml from classpath and send to Camel route >>> > String xml = >>> > >>> IOUtils.toString(getClass().getResourceAsStream("/de/materne/camel/tes >>> > t/xml/ >>> > complex/validNewsfeed.xml")); >>> > sendBody("direct:in", xml); >>> > >>> > // 'execute' all tests >>> > assertMockEndpointsSatisfied(); >>> > } >>> > >>> > >>> > @Test >>> > public void invalidXml() throws Exception { >>> > valid.expectedMessageCount(0); >>> > validationError.expectedMessageCount(1); >>> > >>> > String xml = "<xml/>"; >>> > sendBody("direct:in", xml); >>> > >>> > assertMockEndpointsSatisfied(); >>> > } >>> > >>> > >>> > >>> > @Override >>> > protected RouteBuilder createRouteBuilder() throws Exception { >>> > return new RouteBuilder() { >>> > @Override >>> > public void configure() throws Exception { >>> > // Our XML uses namespaces, so we have to deal with >>> that. >>> > Namespaces ns = new Namespaces("news", >>> > "http://www.materne.de/camel/test/xml/complex/"); >>> > >>> > // XSD-invalid data goes to this endpoint >>> > onException(ValidationException.class) >>> > .to("mock:validationError"); >>> > >>> > from("direct:in") >>> > // XSD-validation >>> > >>> > .to("validator:de/materne/camel/test/xml/complex/newsfeed.xsd") >>> > >>> > // Store newsfeed data in the header before >>> split, >>> > so we haven't to do that on each >>> > // splittet news-message. >>> > .setHeader("newsfeed.date", >>> > ns.xpath("/news:Newsletter/@date", String.class)) >>> > >>> > // http://camel.apache.org/splitter.html >>> > // xtokenize() is available since Camel 2.14. >>> > // Use the 'wrap'-mode so we keep the Newsletter- >>> Header >>> > .split().xtokenize("/news:Newsletter/News", 'w', >>> > ns) >>> > >>> > // Workaround of a bug?? in >>> XMLTokenizerExpression >>> > >>> > .setBody(simple("${body.replace('</</news:Newsletter>', >>> > '</news:Newsletter>')}")) >>> > >>> > .setBody(simple("${body.replace('<</news:Newsletter>', >>> > '</news:Newsletter>')}")) >>> > >>> > // Get some data from the splittet news >>> > .setHeader("news.date", >>> > ns.xpath("/news:Newsletter/News/@date", String.class)) >>> > .setHeader("news.author", >>> > ns.xpath("/news:Newsletter//News/@author", String.class)) >>> > >>> > .to("mock:valid"); >>> > } >>> > }; >>> > } >>> > >>> > } >>> > >>> > >>> > >>> > <?xml version="1.0" encoding="UTF-8"?> <schema >>> > xmlns="http://www.w3.org/2001/XMLSchema" >>> > xmlns:news="http://www.materne.de/camel/test/xml/complex/" >>> > >>> > targetNamespace="http://www.materne.de/camel/test/xml/complex/"> >>> > >>> > <element name="Newsletter"> >>> > <complexType> >>> > <sequence> >>> > <element name="News" minOccurs="1" >>> > maxOccurs="unbounded"> >>> > <complexType> >>> > <simpleContent> >>> > <extension >>> > base="string"> >>> > <attribute >>> > name="date" type="string"/> >>> > <attribute >>> > name="author" type="string"/> >>> > </extension> >>> > </simpleContent> >>> > </complexType> >>> > </element> >>> > </sequence> >>> > <attribute name="date" type="string"/> >>> > </complexType> >>> > </element> >>> > >>> > </schema> >>> > >>> > >>> > >>> > <news:Newsletter >>> > >>> xmlns:news="http://www.materne.de/camel/test/xml/complex/" >>> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>> > >>> > xsi:schemaLocation="http://www.materne.de/camel/test/xml/complex/ >>> > newsfeed.xsd " >>> > date="2014.12.09 14:15"> >>> > <News date="2014.12.09 14:15" author="Jan"> >>> > Here is a demo news. >>> > </News> >>> > <News date="2014.12.09 14:13" author="Jan"> >>> > Second news paragraph. >>> > </News> >>> > </news:Newsletter> >>> > >>> > >>> > >>> >> -----Ursprüngliche Nachricht----- >>> >> Von: smilevasu6 [mailto:srinivas.thu...@gmail.com] >>> >> Gesendet: Dienstag, 9. Dezember 2014 15:12 >>> >> An: users@camel.apache.org >>> >> Betreff: Re: AW: camel - xsd >>> >> >>> >> Don't mind can you give me sample code instead of link >>> >> >>> >> >>> >> >>> >> -- >>> >> View this message in context: >>> >> http://camel.465427.n5.nabble.com/camel- >>> >> xsd-tp5760376p5760396.html >>> >> Sent from the Camel - Users mailing list archive at Nabble.com. >>> > >>