package comexampleretrofittestimport androidxappcompatappAppCompatActivityimport retrofit2convertersimplexmlSimpleXmlConverterFactoryimport retrofit2Callimport androidosBundleimport androidutilLogimpo
要将XML中的id和name打印出来,你需要使用XML解析库来解析XML数据。在这里,我们可以使用Android自带的XmlPullParser来处理XML数据。
首先,创建一个新的类来处理XML数据。命名为XmlParser.kt:
import org.xmlpull.v1.XmlPullParser
import org.xmlpull.v1.XmlPullParserFactory
import java.io.InputStream
class XmlParser {
fun parseXml(inputStream: InputStream): List<App> {
val apps = mutableListOf<App>()
var id = ""
var name = ""
var version = ""
try {
val factory = XmlPullParserFactory.newInstance()
factory.isNamespaceAware = true
val parser = factory.newPullParser()
parser.setInput(inputStream, null)
var eventType = parser.eventType
while (eventType != XmlPullParser.END_DOCUMENT) {
val tagName = parser.name
when (eventType) {
XmlPullParser.START_TAG -> {
if (tagName == "id") {
id = parser.nextText()
} else if (tagName == "name") {
name = parser.nextText()
} else if (tagName == "version") {
version = parser.nextText()
}
}
XmlPullParser.END_TAG -> {
if (tagName == "app") {
apps.add(App(id, name, version))
}
}
}
eventType = parser.next()
}
} catch (e: Exception) {
e.printStackTrace()
}
return apps
}
}
然后,在MainActivity.kt中的onResponse方法中,调用XmlParser类的parseXml方法来解析XML数据并打印id和name:
appServicexml.getAppData().enqueue(object : Callback<ResponseBody> {
override fun onResponse(call: Call<ResponseBody>, response: Response<ResponseBody>) {
val xmlData = response.body()?.string()
// 处理XML数据
val inputStream = xmlData?.byteInputStream()
if(inputStream != null){
val xmlParser = XmlParser()
val apps = xmlParser.parseXml(inputStream)
for (app in apps) {
Log.d("MainActivity", "id is ${app.id}")
Log.d("MainActivity", "name is ${app.name}")
}
}
}
override fun onFailure(call: Call<ResponseBody>, t: Throwable) {
t.printStackTrace()
}
})
这样,你就可以将XML中的id和name打印出来了
原文地址: http://www.cveoy.top/t/topic/iJ03 著作权归作者所有。请勿转载和采集!