Похоже, ваши данные частично структурированы (подкатегории ...), поэтому XML и JSON кажутся подходящими форматами.
Я думаю, что оба упомянутых вами направления имеют смысл: использование уровня базы данных (тамбазы данных, которые поддерживают данные XML, например, eXist-db, Sedna, Sausalito, MarkLogic ...) или уровень файловой системы (с файлом XML или JSON, который может использовать механизм XQuery / XSLT, такой как Saxon, Zorba, ...читать и обновлять).
Как правило, если у вас мало данных, использование файла может быть проще и быстрее в настройке, тогда как при наличии большого количества данных база данных XML может принестибольшая добавленная стоимость и лучшая производительность (например, индексы).