Группа вложенных тегов в Kotlin
Несколько родительских тегов часто повторяют одну структуру дочерних полей:
<root>
<entry>
<word>alpha</word>
</entry>
<entry>
<word>beta</word>
</entry>
<entry>
<word>gamma</word>
</entry>
</root>
Каждый родитель обходят отдельно, а текст берут у вложенного тега:
import org.xml.sax.InputSource
import org.w3c.dom.Element
import java.io.StringReader
import javax.xml.parsers.DocumentBuilderFactory
fun main() {
val xml = """
<root>
<entry><word>alpha</word></entry>
<entry><word>beta</word></entry>
<entry><word>gamma</word></entry>
</root>
""".trimIndent()
val doc = DocumentBuilderFactory.newInstance()
.newDocumentBuilder()
.parse(InputSource(StringReader(xml)))
val entries = doc.getElementsByTagName("entry")
for (i in 0 until entries.length) {
val entry = entries.item(i) as Element
val word = entry.getElementsByTagName("word")
.item(0).textContent
println(word)
}
}
Дан следующий XML:
val xml = """
<root>
<user>
<name>john</name>
<surn>smit</surn>
</user>
<user>
<name>eric</name>
<surn>wils</surn>
</user>
<user>
<name>kyle</name>
<surn>tayl</surn>
</user>
</root>
""".trimIndent()
Выведите в консоль имя и фамилию каждого юзера.
Дан следующий XML:
val xml = """
<root>
<product cost="100" amount="3">
<name>prod1</name>
<category>cat1</category>
</product>
<product cost="200" amount="4">
<name>prod2</name>
<category>cat2</category>
</product>
<product cost="300" amount="5">
<name>prod3</name>
<category>cat3</category>
</product>
</root>
""".trimIndent()
Выведите в консоль название, категорию, цену и количество каждого продукта.