You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不通过字符串处理或Selenium,用RestAssured解析HTML获取Option键值映射?

解析RestAssured返回HTML中的

我通过RestAssured获取到的响应为如下HTML代码:

<html>
  <body>
     <div class="col-md-5 no-left-padding">
          <select class="form-control selectpicker" id="organizationId" name="organizationId" data-live-search="true" data-none-results-text="Nothing found">
                <option value="3">OptionName</option>
                <option value="12">AnotherOptionName</option> 

请问除了将其当作字符串处理之外,是否有更优的方法来解析该HTML,获取Option的value与名称的映射?另外我可以通过Selenium获取选项,但此处也不想使用该工具。


推荐使用Jsoup这个专门的HTML解析库,它是Java生态里处理HTML解析的首选工具之一,完全不需要做繁琐的字符串匹配,也不用依赖Selenium。它能自动处理不完整的HTML标签,支持CSS选择器精准定位元素,可读性和维护性都很强。

步骤1:引入Jsoup依赖

如果用Maven,在pom.xml中添加:

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.17.2</version> <!-- 可替换为最新稳定版 -->
</dependency>

步骤2:结合RestAssured+Jsoup解析代码

import io.restassured.RestAssured;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.util.HashMap;
import java.util.Map;

public class HtmlOptionParser {
    public static void main(String[] args) {
        // 1. 用RestAssured获取目标接口的HTML响应
        String htmlContent = RestAssured.get("你的目标接口URL")
                .then()
                .extract()
                .asString();

        // 2. 用Jsoup解析HTML文档
        Document doc = Jsoup.parse(htmlContent);

        // 3. 定位到id为organizationId的select元素
        Element select = doc.getElementById("organizationId");
        if (select == null) {
            System.out.println("未找到目标select元素");
            return;
        }

        // 4. 提取所有option元素,构建value与名称的映射
        Map<String, String> optionMap = new HashMap<>();
        Elements options = select.select("option");
        for (Element option : options) {
            String value = option.attr("value");
            String label = option.text().trim();
            optionMap.put(value, label);
        }

        // 5. 输出结果示例
        optionMap.forEach((value, label) -> System.out.printf("value: %s, 名称: %s%n", value, label));
    }
}

补充说明

  • Jsoup会自动修复不完整的HTML结构(比如你提供的代码缺少</select>、</div>等闭合标签),无需手动补全
  • 如果select元素的id不唯一,可以用CSS选择器更灵活地定位,比如doc.select("select[name=organizationId]")
  • 相比字符串处理,Jsoup能轻松应对HTML结构变化的情况,代码更健壮

内容的提问来源于stack exchange,提问作者Kosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 14:45:40