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

使用REST Assured解析XML响应时报ClassCastException错误如何解决

报错触发原因

你当前代码中指定的路径bookstore.book.title匹配到了多个<title>节点,REST Assured解析XML多节点匹配结果时,返回的是io.restassured.internal.path.xml.NodeChildrenImpl集合类型对象,你直接将该对象赋值给String类型变量,触发了类型强制转换异常。

可行解决方案
  • 指定节点索引提取单个结果:如果只需要获取指定下标的书籍标题,在路径中添加下标即可,下标从0开始计数,示例代码如下:
@Test
void validateXMLResponse() {
    String book = RestAssured.given().when()
            .get("https://chercher.tech/sample/api/books.xml")
            .then().extract().path("bookstore.book[0].title");
    System.out.println(book);
}
  • 用集合接收多节点结果:如果需要获取所有书籍的标题,直接用List<String>类型接收返回结果即可,示例代码如下:
@Test
void validateXMLResponse() {
    List<String> bookTitles = RestAssured.given().when()
            .get("https://chercher.tech/sample/api/books.xml")
            .then().extract().path("bookstore.book.title");
    bookTitles.forEach(System.out::println);
}
  • 显式调用xmlPath的类型转换方法:使用xmlPath().getString()方法可以自动提取节点的文本内容并转换为字符串,兼容单个节点的提取场景,示例代码如下:
@Test
void validateXMLResponse() {
    String book = RestAssured.given().when()
            .get("https://chercher.tech/sample/api/books.xml")
            .then().extract().xmlPath().getString("bookstore.book[0].title");
    System.out.println(book);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:45:03