Атрибуты группы тегов в Kotlin
У каждого повторяющегося тега свой набор атрибутов и свой текст:
<root>
<lot sku="a1" qty="2">bolt</lot>
<lot sku="b2" qty="5">nut</lot>
<lot sku="c3" qty="1">washer</lot>
</root>
Цикл по списку сочетает textContent
и getAttribute для каждого узла:
import org.xml.sax.InputSource
import org.w3c.dom.Element
import java.io.StringReader
import javax.xml.parsers.DocumentBuilderFactory
fun main() {
val xml = """
<root>
<lot sku="a1" qty="2">bolt</lot>
<lot sku="b2" qty="5">nut</lot>
<lot sku="c3" qty="1">washer</lot>
</root>
""".trimIndent()
val doc = DocumentBuilderFactory.newInstance()
.newDocumentBuilder()
.parse(InputSource(StringReader(xml)))
val lots = doc.getElementsByTagName("lot")
for (i in 0 until lots.length) {
val lot = lots.item(i) as Element
println(lot.textContent)
println(lot.getAttribute("sku"))
println(lot.getAttribute("qty"))
}
}
Дан следующий XML:
val xml = """
<root>
<product cost="100" amount="3">
prod1
</product>
<product cost="200" amount="4">
prod2
</product>
<product cost="300" amount="5">
prod3
</product>
</root>
""".trimIndent()
Выведите в консоль название, цену и количество каждого продукта.