The approach I would take would be to use a database to store the data, if that is an option. This makes it relatively simple to update the data, plus it gives you a lot of flexibility when it comes to choosing and organizing the data to be output. It is then a fairly simple matter to select records from the database and output the information as a XML file.
It can certainly all be done without a DB and just using a XML file as your "database", but it can be a bit cumbersome, and quite likely it will be slower, too (especially as you add more and more data to it).