В общем, если ваш объект связан в иерархию, то ваш xml должен отражать эту иерархию, например.
Ваш узел имеет группу узлов, которая имеет группу узлов.
Это противоположно схеме, где у вас есть список всех, затем еще один список всех, а затем еще один отдельный список.
Теперь вы можете поддерживать три отдельных списка (обрабатывать как таблицы в базе данных), если вы используете уникальные идентификаторы, чтобы связать узлы вместе. Однако при чтении XML-файла у вас будет дополнительный шаг для преобразования его в иерархию объектов.
Что касается хранения иерархии. По сути, каждый объект реализует метод Read и Store. Если родительский объект содержит дочерние элементы, он должен перебирать каждого дочернего элемента, вызывающего его метод store, передавая ему поток или параметры, необходимые для сохранения его в правильном месте.