Только только начал изучать сериализацию и сериализацию в xml.
Предположим у нас есть класс Company. У компании есть поля parent( тоже объект класса Company) и дочки(тоже объекты класса Company). У родителей и дочек точно также могут быть свои родители и дочки). И так мы созданем несколько компаний и помещаем их в ArrayList. Дальше вызваем сериализатор в xml файл. Получается что при сериализации каждого объекта из листа сериализуется весь граф объект, то есть сериализуем первый элемент, у него вызывается сериализация родителя и дочек, у родителя и дочек также вызвается сериализация своего родителя и дочек.
То есть получается, что при сериализации каждого элелемента сериализуется весь граф объектов. Вопрос так и должно быть?
Чтобы избежать бесконечно вложенной сериализации и циклических ссылок, нужно соответствующим образом настроить сериализатор. В таком случае он будет не вкладывать элементы, описывающие ваши объекты, друг в друга, а создаст ссылки по какому-то идентификатору.
Конкретная реализация зависит от того, какой сериализатор вы используете:
в JAXB это делается через @XmlIDREF,
в XStream - через setMode(XPATH_RELATIVE_REFERENCES), setMode(XPATH_ABSOLUTE_REFERENCES) и setMode(ID_REFERENCES).
Сборка персонального компьютера от Artline: умный выбор для современных пользователей