如何将 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)]