Hi Erik, Erik Wiklund wrote:
> Hi, I'm using xstream 1.4.3 and since searching both the documentation and > bug tracker didn't yield anything useful I'll just leave this here. > > I have come across a problem with the fromXML (InputStream) method, when > used in conjunction with the ZipInputStream, reading a single compressed > file (entry) from an archive causes the entire stream to close. This > behaviour is unexpected since it is not documented and also makes > processing multiple xml-files from a single zip-archive require extra > work. Now, I have already managed by converting each file to a string > before calling toXML (String) which will work as expected, however this > should probably be considered a bug or at minimum be documented. > > Also toXML (Reader) seems to be affected. > > Expected behaviour should be that the provided stream is not explicitly > closed by fromXML, regardless of end-of-stream state. > > Example: > XStream XSTREAM = new XStream(new DomDriver("UTF-16")); > ZipInputStream in = new ZipInputStream(new File("xmlfiles.zip")); > ZipEntry ze = null; > while((ze = in.getNextEntry()) != null) { > // here each file in the zip-archive is normally processed by reading from > "in". > XSTREAM.fromXML(in); // this will cause "in" to be close after > processing the first file in the zip-archive. > in.closeEntry(); // will throw an exception since "in" is no longer open. > } > in.close(); // the zip-file is supposed to be closed here, after > processing each file inside. Well, XStream does *not* close an InputStream. However, you explicitly have selected a Driver that uses a XML parser that does *not* support streams on its own. Any DOM parser will have to read the *complete* input stream before it can create the DOM for the processed XML and I can imagine that it will also automatically close the stream. - Jörg --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email