Quoting Marco Antoniotti (marcoxa@cs.nyu.edu):
Ok. But the file is not a binary file.
The fundamental reason XML files need to be processed using binary streams instead of character streams in (portable) Common Lisp is that an XML parser needs to read the first few bytes before it can know which external format to parse the file as.
Implemented using a Common Lisp character stream, that would require a switch of the external format in the middle, using (setf stream-external-format). But that function doesn't exist in portable Lisp. (One of the few Lisps that supports it is Allegro with its simple-streams, but we aim to support more Lisps than just Allegro. We also aim for more speed than typical gray streams-based implementations of this idea offer.)
d.