Ответы веб-сервисов обычно (не всегда) в XML. Если вам нужно извлечь данные из ответа XML-строки в нужный формат, скажем, Java Objects (POJO), вам нужен конвертер, то есть маршалинг и демаршалинг данных.
Простое решение
Использование JAXB
.
Что такое JAXB
? из вики
Архитектура Java для привязки XML (JAXB) - это программная структура, позволяющая разработчикам Java отображать классы Java в представления XML. JAXB предоставляет две основные функции: возможность маршалировать объекты Java в XML и обратное, то есть демаршалировать XML обратно в объекты Java.
Как это вписывается в мой сценарий использования?
Создайте простой POJO для типа ответа, который вы ожидаете. А затем используйте JAXB конвертер, чтобы конвертировать их для вас.
Например. Если вы ожидаете список cityName
в ответ, вы можете создать свой POJO, как показано ниже ..
CityModel.java
public Class CityModel {
private List<String> cityName;
// if more field required, add here.
}
Пример ответа XML должен быть ..
<ListOfCities>
<CityName>My City</CityName>
<CityName>Your City</CityName>
<CityName>So Pity</CityName>
</ListOfCities>
Затем передайте эту строку ответа xml в привязку JAXB для типа эквивалентного класса. то есть CityModel
.
Как все это сделать? Можете ли вы поделиться хорошим примером?
Для начала прочитайте этого руководства .
У меня проблема с именами типов ответов, они не очень хорошо описаны, как я могу сопоставить их с другим именем, которое я хочу?
Возможно, вам придется взглянуть на ссылки ниже, они имеют ключевое значение для изучения аннотаций @XmlRootElement
, @XmlAttribute
, @XmlElement
и т. Д. Для пользовательских конфигураций.
Еще несколько важных ссылок, которые могут помочь позже?
Преобразовать XML-ответ Soap в объект
преобразование xml в java-объект с использованием jaxb (unmarshal)
Использование JAXB для XML с Java
Пример демонтажа JAXB: преобразование XML в объект