Hmm. If I understood you correctly, there's nothing invalid about the XML document itself, just that the parser chokes on reading the stream at some random point?
If that's the case, I would probably first try to switch the DOM implementation (Xerces, JDK 1.4 default implementation, Saxon, etc.) and see if that would help. If not, I'd probably try to look into how the parser works and see where it chokes.
Is the parser recognizing that stream as N separate documents? For SAX you should be seeing a startDocument and an endDocument for each <foo> and </foo> but I'm not sure if the parser can even handle the concept of multiple documents in one stream. If it is not, then maybe you need to provide a root. If you want to go that route, there is a link on my site www.wbrogden.com to an article on combining multiple XML document - look for the "XML Article Published" header - and source code. If on the other hand, the parser is just choking on a particular character in the wrong place, you can get more out of that SAXException. Here is what I use.
Stinging nettles are edible. But I really want to see you try to eat this tiny ad: