我有一个来自服务器的 XML 文件。我使用 xmlPullPrser 将其解析为 Kotlin,但它有一个 'id' 属性。我不知道如何获取“id”值。预先感谢您的答复。 这是我的 xml 文件的一部分:
```
<videoList >
<video id="843">
<title></title>
<author>Ghoneim</author>
</video>
<video id="887">
<title>Anatomic</title>
<author>Tewari</author>
</video>
</videoList>
```
这是我使用 XmlPullParser 的代码的一些部分:
```
class VideoXmlParser {
@Throws(XmlPullParserException::class, IOException::class)
fun parse(inputStream: InputStream): List<Videos> {
inputStream.use { inputStream ->
val parser: XmlPullParser = Xml.newPullParser()
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false)
parser.setInput(inputStream, null)
parser.nextTag()
return readVideoList(parser)
}
}
}
@Throws(XmlPullParserException::class, IOException::class)
fun readVideoList(parser: XmlPullParser): List<Videos> {
val videos = mutableListOf<Videos>()
parser.require(XmlPullParser.START_TAG, ns, "videoList")
while (parser.next() != XmlPullParser.END_TAG) {
if (parser.eventType != XmlPullParser.START_TAG) {
continue
}
// Starts by looking for the video tag
if (parser.name == "video") {
videos.add(readVideo(parser))
} else {
skip(parser)
}
}
return videos
}
```
一旦您的
parser
位于“video”标签,您就可以使用 parser.getAttributeValue
您可以使用 XmlPullParser.getAttributeValue(String namespace, 字符串名称).
这是一个例子。
val xml = """
<videoList>
<video id="843">
<title></title>
<author>Ghoneim</author>
</video>
<video id="887">
<title>Anatomic</title>
<author>Tewari</author>
</video>
</videoList>
""".trimIndent()
val parser = Xml.newPullParser().apply {
setInput(xml.byteInputStream(), null)
}
val videoIds = readVideoIds(parser) // [843, 887]
fun readVideoIds(parser: XmlPullParser) = buildList {
do {
val eventType = parser.next()
if (eventType == XmlPullParser.START_TAG && parser.name == "video") {
add(parser.getAttributeValue(null, "id"))
}
} while (eventType != XmlPullParser.END_DOCUMENT)
}