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.

Nueva línea entre elementos vacíos con etree.

Agregué shortemptyelements=False a la función write de etree para que cuando tenga elementos vacíos, como <\t>, los escriba en este formato:


<root>
<t></t>
</root>

Mi problema es que necesito que estén en líneas separadas, como esto:


<root>
<t>
</t>
</root>

y no puedo descubrir cómo hacerlo.

.text=’\n’ o .text=” ambos no funcionan.

¿Hay alguna forma de hacerlo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes obtener la salida deseada agregando el parámetro pretty_print=True al método etree.tostring().

    Aquí tienes un ejemplo:

    import xml.etree.ElementTree as ET
    
    root = ET.Element("root")
    t = ET.SubElement(root, "t")
    
    with open("output.xml", "wb") as f:
        ET.ElementTree(element=root).write(f, encoding="unicode", short_empty_elements=False, pretty_print=True)
    

    Esto producirá la siguiente salida en el archivo output.xml:

    <root>
      <t>
      </t>
    </root>
    

    Ten en cuenta que se utiliza el parámetro pretty_print=True en la función write(). Esto le indica al módulo ElementTree que formatee el XML con sangrías y saltos de línea, resultando en el formato de salida deseado.

Comments are closed.