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
