I did reply last week and suggested to use XMLSource.setBuffering(true)

Sergey

On Tue, Aug 10, 2010 at 2:15 AM, Daniel Kulp <[email protected]> wrote:

>
> Any streaming XML parsing type thing will consume the InputStream.   If you
> need to do multiple actions on it, you would need to somehow buffer the
> input
> into a form that can be read multiple times.
>
> The best way, in your case, would be to convert the XMLSource to a DOM and
> run
> the XPaths on that instead.
>
> Dan
>
>
> On Monday 09 August 2010 1:28:51 pm Albert wrote:
> > Hi,
> >
> > I posted my message last friday and have got no response yet, except for
> a
> > mail saying the post has not yet been accepted by mailing list cuz i may
> > not be a user etc etc. So here's posting it again, please let me know if
> > i'm doing something wrong.
> >
> >
> > I'm using CXF 2.2.9
> >
> > My JAX RS service method accepts XMLSource as the input type and i used
> > xpath expressions on it.
> >
> > The first parse works fine. The second doesn't. I reversed the order and
> > the result is the same. I looked up your source, and it fails at this
> > location
> >
> >  return xpath.evaluate(expression, getSource(), type); [XMLSource, #173]
> >
> > with exception
> >
> > </pre></p><p>root cause <pre>java.lang.IllegalArgumentException: Illegal
> > XPath expression '/usercredentials/username'
> >
> > and the root cause as
> >
> > </pre></p><p>root cause <pre>org.xml.sax.SAXParseException: Premature end
> > of file.
> >
> > I looked up the internet, and from one of the posts, it could be because
> > the InputStream is already closed after the first parse.
> >
> >
> http://www.danielschneller.com/2008/01/saxparseexception-1-1-premature-end-
> > of.html
> >
> > Please take a look.
> >
> > Thank you.
>
> --
> Daniel Kulp
> [email protected]
> http://dankulp.com/blog
>

Reply via email to