Разархивирование JAXB

#java #jaxb

#java #jaxb

Вопрос:

Возможно ли разархивировать класс, не зная его типа ( JAXBContext.newInstance(clazz) ), или какой правильный способ проверить, что происходит? Я получаю сообщения для разархивирования из обычной текстовой строки

Входящие классы не реализуют никакого интерфейса и могут быть в любом пакете.

Спасибо

Ответ №1:

Нет, не совсем. Контексту JAXB требуется некоторая информация о том, к каким классам следует привязываться. при необходимости передайте список всех возможных классов, аннотированных JAXB, в метод context factory.

Однако это не должно быть ограничением — ваш собственный код также должен знать, какие классы следует ожидать. Если ваш код не знает или не заботится о типе связанных классов, то JAXB не является инструментом для этой работы, вам следует просто разархивировать в какой-нибудь универсальный DOM.

Комментарии:

1. да, вы правы, и я могу отменить его с помощью Unmarshaller.unmarshal (InputStream), наконец, без указания типа класса, верно?

2. @fafaano: Правильно. Вам, вероятно, все еще нужно привести результат к чему-то, хотя, иначе зачем беспокоиться о JAXB?

Ответ №2:

Попробуйте найти ваши классы, которые могут поставляться в формате xml в одном пакете, а затем передать их список в JAXBContext.