Невозможно удовлетворить @org.simpleframework.xml.Element(data=false, name=soap:Body, required=true, type=void) в поле 'body'

Я пытаюсь десериализовать этот маленький xml и не повезло. Я получаю исключение;

Невозможно удовлетворить @org.simpleframework.xml.Element(data=false, name=soap:Body, required=true, type=void) в поле 'body'

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <Response xmlns="http://asdasdasd.com/">
            <Result>true</Result>
            <AppPath />
            <Message />
        </Response>
    </soap:Body>
</soap:Envelope>

Кто-нибудь может разобраться в проблеме? Ой! Классы:

Класс конверта:

@Root(name = "soap:Envelope", strict = false)
@NamespaceList({
        @Namespace(prefix = "xsd", reference = "http://www.w3.org/2001/XMLSchema"),
        @Namespace(prefix = "xsi", reference = "http://www.w3.org/2001/XMLSchema-instance"),
        @Namespace(prefix = "soap", reference = "http://schemas.xmlsoap.org/soap/envelope/")
})
public class ResponseEnvelope {

    @Element(name = "soap:Body")
    private CheckVersionResponseBody body;

    public CheckVersionResponseBody getBody() {
        return body;
    }

    public void setBody(CheckVersionResponseBody body) {
        this.body = body;
    }

    public ResponseEnvelope() {
    }

    public ResponseEnvelope(CheckVersionResponseBody body) {
        this.body = body;
    }
}

Класс кузова

@Root(name = "soap:Body")
public class CheckVersionResponseBody {

    @Element(name = "Response")
    @Namespace(reference = "http://asdasdasd.com/")
    Response response;

    public CheckVersionResponseBody() {
    }

    public CheckVersionResponseBody(Response response) {
        this.response = response;
    }

    public Response getVersionControlGeneralResponse() {
        return versionControlGeneralResponse;
    }
}

person msecilmis    schedule 15.03.2018    source источник


Ответы (1)


Что ж, я нашел ответ, если у кого-то еще в «БУДУЩЕМ» есть эта проблема.

Просто избавьтесь от префикса в теле. Тот.

@Root(name = "Body")
public class CheckVersionResponseBody {

    @Element(name = "Response")
    @Namespace(reference = "http://asdasdasd.com/")
    Response response;

    public CheckVersionResponseBody() {
    }

    public CheckVersionResponseBody(Response response) {
        this.response = response;
    }

    public Response getVersionControlGeneralResponse() {
        return versionControlGeneralResponse;
    }
}
person msecilmis    schedule 22.03.2018