#java #jaxb
#java #jaxb
Вопрос:
Возможно ли разархивировать класс, не зная его типа ( JAXBContext.newInstance(clazz)
), или какой правильный способ проверить, что происходит? Я получаю сообщения для разархивирования из обычной текстовой строки
Входящие классы не реализуют никакого интерфейса и могут быть в любом пакете.
Спасибо
Ответ №1:
Нет, не совсем. Контексту JAXB требуется некоторая информация о том, к каким классам следует привязываться. при необходимости передайте список всех возможных классов, аннотированных JAXB, в метод context factory.
Однако это не должно быть ограничением — ваш собственный код также должен знать, какие классы следует ожидать. Если ваш код не знает или не заботится о типе связанных классов, то JAXB не является инструментом для этой работы, вам следует просто разархивировать в какой-нибудь универсальный DOM.
Комментарии:
1. да, вы правы, и я могу отменить его с помощью Unmarshaller.unmarshal (InputStream), наконец, без указания типа класса, верно?
2. @fafaano: Правильно. Вам, вероятно, все еще нужно привести результат к чему-то, хотя, иначе зачем беспокоиться о JAXB?
Ответ №2:
Попробуйте найти ваши классы, которые могут поставляться в формате xml в одном пакете, а затем передать их список в JAXBContext.