当我尝试使用 REST assured 解析 XML 响应时收到错误消息

I get an error message when i try to parse an XML response using REST assured

我正在使用这个简单的函数来获取并打印出 XML 响应中的值:

@Test

    void validateXMLResponse() {

        String book = RestAssured.given().when()
                .get("https://chercher.tech/sample/api/books.xml")
                .then().extract().path("bookstore.book.title");
        System.out.println(book);

    }

但我在控制台中收到此错误:

java.lang.ClassCastException: class io.restassured.internal.path.xml.NodeChildrenImpl cannot be cast to class java.lang.String (io.restassured.internal.path.xml.NodeChildrenImpl is in unnamed module of loader 'app'; java.lang.String is in module java.base of loader 'bootstrap')

由于您的 xml 中有多个书籍节点,您应该使用相应的索引来定义您想要获取哪本书的标题。像这样:“bookstore.book[0].title”。或者遍历索引得到所有的书名。

    @Test
    public void validateXMLResponse() {
        String book = RestAssured.given().when()
                .get("https://chercher.tech/sample/api/books.xml")
                .then().extract().body().path("bookstore.book[0].title");
        System.out.println(book);
    }