如何将 html 输出解析为 kotlin 中的对象
How to parse html output to object in kotlin
我们收到来自服务的响应,他们正在返回下拉选项列表。
我从 api 调用中得到字符串响应。
<option value="X" title="XXXX">X</option>
<option value="Y" title="YYYY">Y</option>
我想在 kotlin 中将其解析为类似这样的对象数组
[
{value:"X",title:"XXXX"},
{value:"Y",title:"YYYY"}
]
谁能帮忙。
解决方案很少。您可以使用正则表达式 <option value=\"(.+)\" title=\"(.+)\">.+</option>
解析您的简单 HTML
// class to hold parsed result
data class Option(val value: String, val title: String)
fun main() {
val html = """
<option value="X" title="XXXX">X</option>
<option value="Y" title="YYYY">Y</option>
"""
val regex = "<option value=\"(.+)\" title=\"(.+)\">.+</option>".toRegex()
val regexOptions = regex.findAll(html)
.map {
Option(
value = it.groupValues[1],
title = it.groupValues[2]
)
}.toList()
println("RegEx: $regexOptions")
或者您可以使用旨在解析复杂 HTML.
的 Jsoup 库
val jsoupOptions = Jsoup.parse(html)
.select("option")
.map {
Option(
value = it.attr("value"),
title = it.attr("title")
)
}
println("Jsoup: $jsoupOptions")
}
两种情况下的输出相同:
RegEx: [Option(value=X, title=XXXX), Option(value=Y, title=YYYY)]
Jsoup: [Option(value=X, title=XXXX), Option(value=Y, title=YYYY)]
我们收到来自服务的响应,他们正在返回下拉选项列表。 我从 api 调用中得到字符串响应。
<option value="X" title="XXXX">X</option>
<option value="Y" title="YYYY">Y</option>
我想在 kotlin 中将其解析为类似这样的对象数组
[
{value:"X",title:"XXXX"},
{value:"Y",title:"YYYY"}
]
谁能帮忙。
解决方案很少。您可以使用正则表达式 <option value=\"(.+)\" title=\"(.+)\">.+</option>
// class to hold parsed result
data class Option(val value: String, val title: String)
fun main() {
val html = """
<option value="X" title="XXXX">X</option>
<option value="Y" title="YYYY">Y</option>
"""
val regex = "<option value=\"(.+)\" title=\"(.+)\">.+</option>".toRegex()
val regexOptions = regex.findAll(html)
.map {
Option(
value = it.groupValues[1],
title = it.groupValues[2]
)
}.toList()
println("RegEx: $regexOptions")
或者您可以使用旨在解析复杂 HTML.
的 Jsoup 库 val jsoupOptions = Jsoup.parse(html)
.select("option")
.map {
Option(
value = it.attr("value"),
title = it.attr("title")
)
}
println("Jsoup: $jsoupOptions")
}
两种情况下的输出相同:
RegEx: [Option(value=X, title=XXXX), Option(value=Y, title=YYYY)]
Jsoup: [Option(value=X, title=XXXX), Option(value=Y, title=YYYY)]