This package provides chunked XML parsing using iteratees. It is especially suited
to implementing XML-based socket protocols, but is useful wherever lazy parsing is
needed on production systems where you can't tolerate the problems that come with
Haskell's lazy I/O.
The XML is presented as a lazy tree, and is processed by a handler implemented using
a monad transformer called XMLT. The resulting monad is suspended whenever it tries
to read a part of the tree that hasn't been parsed yet, and continued as soon as it
is available.
The resulting code looks and functions very much as if you were using lazy I/O,
only without the associated problems. Your handlers can have effects, yet they
come out in quite a functional style.
Background: Haskell's lazy I/O can be problematic in some applications because it
doesn't handle I/O errors properly, and you can't predict when it will clean up its
resources, which could result in file handles running out.