Java: сериализация коллекции XML
-
24-09-2019 - |
Вопрос
Каждый раз, когда я искал что-то о том, как сериализовать XML, я нашел сериализаторы бобов. Похоже, что все должно быть объявлено как имущество, которое побеждает мою цель. Я хочу сериализовать сложные иерархии (пока они не доберутся до примитивов, конечно) в XML, начните с (сказать) словарь или список в качестве родительского объекта.
Какие варианты есть для автоматической сериализации XML?
Я нашел несколько ссылок на JAXB с 2004 года, это все еще путь к работе?
Решение
Попробуйте Xstream. библиотека. Он легко сериализует любую комплексную иерархию объекта, которую вы можете бросить на нее.
Другие советы
У меня было много успеха с JAXB, особенно при использовании поддержки для него в NetBeans. Я знаю, на самом деле он поддерживает списки. Я не пробовал это с картами, но я подозреваю, что это работает. Если ничего другого, просто сделайте простой фасоль, который содержит список, и пусть это будет сериализованный боб.
Вы можете использовать стандартный 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.