sn> One thing I notice. In B you say "pass a MimeBodyPart sn> (constructed from a DataSource in turn constructed from the sn> original SocketInputStream)" and in D you say "where that sn> InputSource would be constructed from the original sn> SocketInputStream". Since you can only read the InputStream once, sn> you would need to construct the InputSource for D from the part sn> you created in B.
Yeah, actually it's a little worse than that. I found out that the MimeBodyPart stuff reads the content immediately rather than streaming it in/out as needed (at least I deduce that from clues in the JavaDoc since I don't have sources for mailapi.jar), and my whole idea is to avoid reading the stream until the parser does it. Anyhow, I'll keep casting around until I find some handy class that does that or maybe make a simple class that starts with a stream and produces a stream, byte[], or String on demand. At some logical layer above that class, I'll make sure nobody needs to read the stream twice (ie, nobody needs to get the byte[] or String after the stream has already been read by the XML parser). I may wail on this if I can get an undistracted few hours over the next couple weeks. If I don't make it by then, my guess is I'll never get to it. -- [EMAIL PROTECTED] (WJCarpenter) PGP 0x91865119 38 95 1B 69 C9 C6 3D 25 73 46 32 04 69 D6 ED F3