如何在Android中使用SimpleXML解析SOAP响应?

时间:2019-01-22 09:19:43

标签: android kotlin simple-framework

我需要从我的android应用程序中的SOAP服务读取XML文件,并且遇到问题。请求对象根本没有问题,但是当尝试读取响应时,我没有任何元素。

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时,它始终为null。 我需要为每个类编写一个Converter吗? 有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

一段时间后,我发现不需要前缀来读取XML响应。 例如。

@Root(name = "S:Envelope", strict = false) 应该 @Root(name = "Envelope", strict = false)