Почему моя программа возвращает строковое значение в формате XML? - PullRequest
0 голосов
/ 21 мая 2019

Я использую веб-сервис, и он возвращает строковое значение.Но в моем выводе это значение в формате XML:

String point = request.getParameter("point");
try {
  String latLonListCityNames = proxy.latLonListCityNames(new BigInteger(point));
  request.setAttribute("point", latLonListCityNames);
  System.out.println(latLonListCityNames);
} catch (RemoteException e) {
  e.printStackTrace();
}

Я ожидаю, что вывод будет, например, "Оклахома", но фактический вывод:

<?xml version='1.0' ?>
<dwml version='1.0' xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://graphical.weather.gov/xml/DWMLgen/schema/DWML.xsd">
    <latLonList>
    <cityNameList>
        Oklahoma
    </cityNameList>
</dwml>

1 Ответ

0 голосов
/ 22 мая 2019

Ответы веб-сервисов обычно (не всегда) в 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 в объект

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...