i meant woodstox-core-asl (e.g., woodstox-core-asl-4.4.1.jar).
its maven coordinate is

mvn:org.codehaus.woodstox/woodstox-core-asl/4.4.1

you need to have woodstox or some other parser that reliably reports
the offset location at each parse event.
Sjsxp (sun/oracle implementation included in JDK) doesn't do that, so
you can't use it.

jmtest.tar.gz contains a maven project that can be executed directly
by typing mvn test at the console or can be imported into your eclipse
IDE.

2014-12-10 13:13 GMT+01:00 Aki Yoshida <elak...@gmail.com>:
> 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.
>>>> >
>>>

Reply via email to