如何在 Android 中使用 SimpleXML 解析 SOAP 响应?
How to parse a SOAP Response with SimpleXML in Android?
我需要从我的 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 时,它始终为空。
我是否需要为每个 class 编写一个转换器?
有人可以帮我吗?
一段时间后我发现,我不需要前缀来读取 XML 响应。
例如。
@Root(name = "S:Envelope", strict = false)
应该
@Root(name = "Envelope", strict = false)
我需要从我的 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 时,它始终为空。 我是否需要为每个 class 编写一个转换器? 有人可以帮我吗?
一段时间后我发现,我不需要前缀来读取 XML 响应。 例如。
@Root(name = "S:Envelope", strict = false)
应该
@Root(name = "Envelope", strict = false)