For read-only access (such as config files or static data), I tend to use
XML::Simple, which is a gem of a module. It happily parses large XML files and spits out an anonymous hash or array with your data formatted the way you expect. Excellent. And to make things even better, it has locking support and will cache the parsed XML tree as a separate file using (you guessed it)
Storable! You get the best of two worlds: human-readable files that are lighting fast to load.
However, for complex read/write-operations I wouldn't recommend reading and writing entire XML files. Maybe you should go with a mixed solution and put your Storable objects in a DB_File?
Cheers,
--Moodster