in reply to XML "Database" --> HTML

If you're looking for a text-based alternative to XML, I'd recommend CSV. The Text::CSV module handles proper quoting so you don't have to worry about weird characters in your data messing up your flat file's structure. This also gives you one-record-per-line, which would allow "stream-based parsing" like you were looking for.

However, take sri up on the suggestion to use DBD::SQLite and see if that works out first. Looks like a great fit for your application to me.