I Was Wrong
It happens.
It turns out that libxml2 supports something pretty similar to what I had in mind. Instead of providing the SAX parser with a get-more-input-data callback, it has a "push" mechanism whereby one gives it data as it becomes available instead of buffering and providing data as