Java: сериализация XML коллекции - PullRequest
1 голос
/ 01 февраля 2010

Каждый раз, когда я искал что-то о том, как сериализовать в XML, я находил сериализаторы бинов. Кажется, что все должно быть объявлено как собственность, которая противоречит моей цели. Я хочу сериализовать сложные иерархии (конечно, пока они не получат примитивы) в XML, начать с (скажем) словаря или списка в качестве родительского объекта.

Какие есть варианты для автоматической сериализации XML?

Я нашел некоторые ссылки на JAXB с 2004 года, это все еще путь?

Ответы [ 3 ]

3 голосов
/ 01 февраля 2010

У меня был большой успех с JAXB, особенно при использовании его поддержки в NetBeans. Я точно знаю, что он поддерживает списки. Я не пробовал это с картами, но я подозреваю, что это работает. Если ничего другого, просто создайте простой bean-компонент, содержащий список, и пусть это будет сериализованный bean-компонент.

3 голосов
/ 01 февраля 2010

Попробуйте библиотеку XStream . Он будет легко сериализовать любую сложную иерархию объектов, которую вы можете использовать.

1 голос
/ 01 февраля 2010

Вы можете использовать стандартные 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.

...