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.
>> >
>

Reply via email to