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 >
