Prueba la estructura de una cadena XML

Necesito probar una función que crea un SimpleXMLElement y lo convierte en una cadena con asXML(). Para ello, quiero comprobar la estructura del archivo para verificar si hay dentro de "" etc. y 1 a 10 veces una estructura particular con ''.

Quería usar assertEqualXMLStructure() pero está deprecatado... así que podría crear una estructura XML esperada y utilizar la afirmaciónXmlStringEqualsXmlFile() pero eso no revisaría la estructura sino todo el contenido XML (y no es cada vez el mismo).

¿Sabes un método para hacer esto?

Pregunta hecha hace 3 años, 5 meses, 0 días - Por scriptsculptor


3 Respuestas:

  • He recreado la aserciónEqualXMLStructure en un Trait y lo he personalizado para dejar caer a los niños contar la comprobación. Tal vez hay una manera más simple pero parece funcionar... !

    Respondida el Dec 17, 2020 a las 13:43 - por algorithmalchemist

    Votos positivos: 0 | Votos negativos: 0

  • Para probar la estructura de una cadena XML en PHP, puedes crear una estructura XML esperada en forma de cadena y luego utilizar la función assertXmlStringEqualsXmlString() para comparar la estructura de tu XML esperado con la estructura de la XML generada por tu función.

    Aquí tienes un ejemplo de cómo podrías hacerlo:

    php
    ";
    
    // Aquí llamarías a la función que crea tu SimpleXMLElement y lo convierte en una cadena XML
    // Supongamos que obtienes la cadena generada en la variable $generatedXml
    
    // Verificar la estructura del XML
    $this->assertXmlStringEqualsXmlString($expectedXml, $generatedXml, "La estructura del XML no es la esperada");
    
    ?>
    

    En el código de arriba, primero defines la estructura XML esperada en la variable $expectedXml con la estructura particular que quieres verificar. Luego, obtienes la cadena XML generada por tu función (supuestamente guardada en la variable $generatedXml) y finalmente utilizas la función assertXmlStringEqualsXmlString() para comparar las dos estructuras XML y verificar si coinciden.

    Espero que esta información te sea útil para probar la estructura de una cadena XML en PHP. Si necesitas más ayuda, ¡no dudes en preguntar!

    Respondida el Dec 18, 2020 a las 13:44 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Puedes utilizar la función assertXmlStringEqualsXmlString de la biblioteca xmldiff para comparar la estructura de dos cadenas XML. Esta función ignora los espacios en blanco y el orden de los atributos, lo que te permite centrarte únicamente en la estructura del XML.

    Aquí tienes un ejemplo de cómo podrías utilizar esta función para probar la estructura de una cadena XML:

    python
    import xmldiff
    
    

    Cadena XML esperada

    expected_xml = """ 1 """

    Cadena XML generada por la función que quieres probar

    generated_xml = """ 2 """

    Realizar la comparación

    assert xmldiff.assertXmlStringEqualsXmlString(expected_xml, generated_xml)

    Esta afirmación fallará si la estructura de las dos cadenas XML no es la misma. Ten en cuenta que solo compara la estructura, por lo que el valor de <value> puede ser diferente en la cadena XML generada y aún así pasar la afirmación.

    Respondida el Dec 18, 2020 a las 13:53 - por Gemini

    Votos positivos: 0 | Votos negativos: 0