Синтаксический анализ JAXB XML возвращает пустой список для общего списка - PullRequest
0 голосов
/ 25 апреля 2019

При попытке проанализировать XML с помощью JAXBContext.newInstance (GetVehiclesResponse.class) я получаю APIResponse [status=0, response=Response [items=[]]] (toString здесь не показано). Пробовал смешивать / изменять аннотации, но, вероятно, не нашел правильную комбинацию.

 @XmlRootElement(name="nodes")
    public class GetVehiclesResponse extends APIResponse<Vehicle> {

    }

.

@XmlAccessorType(XmlAccessType.FIELD)
public class APIResponse<T> {

    private String status;

    private Response<T> response;

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public Response<T> getResponse() {
        return response;
    }

    public void setResponse(Response<T> response) {
        this.response = response;
    }

}

.

@XmlRootElement
public class Response<T> {

    private List<T> items;

    public Response() {
        items = new ArrayList<T>();
    }

    public Response(List<T> items) {
        this.items = items;
    }

    @XmlElementWrapper
    public List<T> getItems() {
        return items;
    }

}

.

@XmlRootElement(name="node")
@XmlAccessorType(XmlAccessType.FIELD)
public class Vehicle {

    private String id;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

}

XML

<nodes>
    <status>0</status>
    <response>
        <node key="0">
            <id>...</id>
            <name>...</name>
        </node>
        <node key="1">
            <id>...</id>
            <name>...</name>
        </node>
    </response>
</nodes>

Некоторый текст, чтобы сделать это сообщение действительным. Некоторый текст, чтобы сделать этот пост действительным. Некоторый текст, чтобы сделать это сообщение действительным.

...