es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Recibo un mensaje de error cuando intento analizar una respuesta XML utilizando REST assured.

Estoy utilizando esta función simple para obtener e imprimir el valor de una respuesta 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);

}

Pero estoy recibiendo este error en la consola:

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')
Tags:  

Answer

  1. Avatar for davy.ai

    El error se produce al intentar convertir un objeto de tipo io.restassured.internal.path.xml.NodeChildrenImpl a un objeto Java String. Este error ocurre porque el método path() de RestAssured está devolviendo un objeto de tipo NodeChildrenImpl, que es una implementación específica de la interfaz NodeList, diseñada para respuestas XML.

    Para solucionar este error, debes utilizar el método getTextContent() de la interfaz Node para obtener el valor de texto del objeto NodeChildrenImpl. Aquí tienes el código actualizado:

    @Test
    void validateXMLResponse() {
        String book = RestAssured.given().when()
            .get("https://chercher.tech/sample/api/books.xml")
            .then().extract().path("bookstore.book.title[0]"); // seleccionar el primer título del libro
        System.out.println(book.getTextContent());
    }
    

    Este código selecciona el primer título del libro (puesto que puede haber varios) de la respuesta XML utilizando sintaxis XPath y luego llama al método getTextContent() del objeto Node resultante para obtener el valor de texto como objeto String.

    Con esto deberías solucionar el error que estabas viendo y permitirte obtener e imprimir el valor deseado de la respuesta XML.

Comments are closed.