Java: сериализация XML коллекции
Каждый раз, когда я искал что-то о том, как сериализовать в XML, я находил сериализаторы бинов. Кажется, что все должно быть объявлено как собственность, которая противоречит моей цели. Я хочу сериализовать сложные иерархии (пока они не дойдут до примитивов, конечно) в XML, начать с (скажем) словаря или списка в качестве родительского объекта.
Какие есть варианты для автоматической сериализации XML?
Я нашел некоторые ссылки на JAXB с 2004 года, это все еще путь?
3 ответа
Попробуйте библиотеку XStream. Он легко будет сериализовать любую сложную иерархию объектов, которую вы можете использовать.
У меня был большой успех с JAXB, особенно при использовании его поддержки в NetBeans. Я точно знаю, что он поддерживает списки. Я не пробовал это с картами, но я подозреваю, что это работает. Если ничего другого, просто создайте простой bean-компонент, содержащий список, и пусть это будет сериализованный bean-компонент.
Вы можете использовать стандарт java.bean.XMLEncoder
/ Decoder
классы для сериализации коллекций, потому что механизм позволяет вызывать методы через XML. Вывод выглядит примерно так:
<object class="java.util.ArrayList">
<void method="add">
<string>Hello</string>
</void>
<void method="add">
<string>World</string>
</void>
</object>
Конечно, в этом есть недостатки; например, вы не можете легко сериализовать Collections.emptyXXXX()
но есть обходные пути. Но поскольку все работает в соответствии с публично поддерживаемым API классов, постоянная форма XML устойчива к изменениям схемы.
Я нашел это очень полезным постоянным механизмом для объектов Java.