Как проанализировать SOAP-ответ с SimpleXML в Android? - PullRequest
0 голосов
/ 22 января 2019

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

XML выглядит как

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns2:getTexts xmlns:ns2="http://service.......de/">
            <return>text1</return>
            <return>text2</return>
            <return>text3</return>
            <return>text4</return>
            <return>text5</return>
        </ns2:getTexts>
    </S:Body>
</S:Envelope>

Мои модули

@Root(name = "S:Envelope", strict = false)
class ResponseEnvelope @JvmOverloads constructor(
    @field:Element(name = "S:Body", required = false) var body: GetTexts? = null
)

@Root(name = "S:Body", strict = false)
class GetTexts @JvmOverloads constructor(
    @field:Element(name = "ns2:getTexts", required = false) var response: TextItem? = null
)

@Root(strict = false)
class TextItem @JvmOverloads constructor(
    @field:ElementList(
        name = "ns2:getTexts",
        entry = "return",
        inline = true,
        required = false
    ) var textList: List<String>? = mutableListOf()
)

При попытке доступа к ResponseEnvelope он всегда равен нулю. Нужно ли писать конвертер для каждого класса? Может ли кто-нибудь помочь мне здесь, пожалуйста?

1 Ответ

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

Через некоторое время я обнаружил, что мне не нужны префиксы для чтения XML-ответа.например.

@Root(name = "S:Envelope", strict = false) должно быть @Root(name = "Envelope", strict = false)

...