Я выполнил следующие процедуры:
Если я использую JDK 1.8.077, тогда XML успешно разбирается. Если я использую любую другую JDK-версию версии 1.8.102 или 1.8.112, JAXB не сможет правильно разобрать и возвращает значение null
для элемента.
Может ли кто-нибудь предложить мне эту проблему?
Одна из возможных причин проблемы заключается в том, что парсер ожидает, что код предоставит поддержку пространства имен XML с более поздними версиями JDK 1.8.
Если вы используете синтаксический анализатор SAX для анализа XML-документа, убедитесь, что для API namespaceAware установлено значение true
final SAXParserFactory sax = SAXParserFactory.newInstance(); sax.setNamespaceAware(истина);
По умолчанию значение устанавливается как false
Я столкнулся с той же проблемой, используя версию JDK 1,8.121 и 1,8.131 с синтаксическим анализатором на основе SAX, и проблема была решена, просто установив значение true для API-интерфейс namespaceAware для экземпляра SAXParserFactory.
ПРИМЕЧАНИЕ. Классы JAXB были созданы из eclipse
Я могу подтвердить такое же ошибочное поведение с 1.8.111, после понижения до 1.8.74 JAXB смог правильно разобрать.
Версия 1.8.111:
JAXBContext.createUnmarshaller().unmarshal(new StreamSource(...), MyType.class).getValue()
возвращает null