Я получаю сообщение об ошибке, когда пытаюсь проанализировать XML-ответ с помощью REST assured

#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')  

Ответ №1:

Поскольку у вас в xml больше, чем узел книги, вы должны использовать соответствующий индекс, чтобы определить, название какой книги вы хотите получить. Вот так: «книжный магазин.книга[0].название«. Или выполните итерацию по индексу, чтобы получить названия всех книг.

 @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);  }