要将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打印出来了

package comexampleretrofittestimport androidxappcompatappAppCompatActivityimport retrofit2convertersimplexmlSimpleXmlConverterFactoryimport retrofit2Callimport androidosBundleimport androidutilLogimpo

原文地址: http://www.cveoy.top/t/topic/iJ03 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录