AXIS-JAXB Unmarshal не работает ни с одним JDK, кроме jdk 1.8.077

2

Я выполнил следующие процедуры:

  • Сгенерированные файлы клиента в eclipse с использованием WSDL (Apache Axis 1).
  • Использование JAXB для отмены запроса XML-запроса и последующего вызова веб-службы.

Если я использую JDK 1.8.077, тогда XML успешно разбирается. Если я использую любую другую JDK-версию версии 1.8.102 или 1.8.112, JAXB не сможет правильно разобрать и возвращает значение null для элемента.

Может ли кто-нибудь предложить мне эту проблему?

Теги:
jaxb
wsdl

2 ответа

0

Одна из возможных причин проблемы заключается в том, что парсер ожидает, что код предоставит поддержку пространства имен 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

0

Я могу подтвердить такое же ошибочное поведение с 1.8.111, после понижения до 1.8.74 JAXB смог правильно разобрать.

Версия 1.8.111:

JAXBContext.createUnmarshaller().unmarshal(new StreamSource(...), MyType.class).getValue()

возвращает null

  • 0
    Не могли бы вы сообщить мне точную проблему, которая может быть использована для решения.
  • 0
    Вот еще один stackoverflow.com/questions/40889384/…

Ещё вопросы

Сообщество Overcoder
Наверх
Меню