Разобрать SOAP-ответ из XML-файла в объект - PullRequest
0 голосов
/ 05 января 2019

У меня есть проект с работающей интеграцией SOAP, и мне нужно написать несколько тестов.

Чтобы не делать вызовов веб-служб во время тестов, я сохранил некоторые ответы SOAP в файлы XML, но я не знаю, как превратить эти XML в соответствующие объекты.

Я пытался использовать JAXBContext / Unmarshaller, но я получаю ошибку expected elements are (None), которая, как мне кажется, связана с тем, что класс, связанный с ответом XML, не имеет аннотации @XmlRootElement (и я не могу это изменить).

Этот вопрос очень похож на мой, но текущий ответ на самом деле не определяет, как получить конечный объект из ответа.

Мне также непонятно, нужно ли мне оставлять специфичные для SOAP теги или проще их удалить и обработать файл как обычный XML.

1 Ответ

0 голосов
/ 05 января 2019

После просмотра этого ответа я получил его на работу.

Проблема заключалась в отсутствии @XmlRootElement, как и ожидалось, и для того, чтобы он заработал, необходимо использовать версию с 2 параметрами unmarshall(), как показано ниже (код из другого вопроса):

String pathname = "file.xml";
InputStream stream = new FileInputStream(pathname); 
JAXBContext jaxbContext = JAXBContext.newInstance(UserType.class); 
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); 
XMLInputFactory factory = XMLInputFactory.newInstance(); 
XMLEventReader someSource = factory.createXMLEventReader(stream); 
JAXBElement<UserType> userElement = jaxbUnmarshaller.unmarshal(someSource, UserType.class); UserType user = userElement.getValue();
...