how to xml add a new element to a new line

Question:

Executing the code:

parser = ET.XMLParser(strip_cdata=False, )
tree = ET.parse(f'copy_{xml_file}', parser)
root[0].insert(0, ET.Element("type"))
root.write("test.xml", pretty_print=True)

And the element I added creates not on a new line but in front of another element, it turns out the form:

    <firstTeg>327</firstTeg>
    <secondTeg>1.0</secondTeg><type/>
    

I need to get this kind of:

    <firstTeg>327</firstTeg>
    <secondTeg>1.0</secondTeg>
    <type/>

How do I create a new tag on a new line?

Asked By: Fedor March

||

Answers:

parser = ET.XMLParser(strip_cdata=False, )
tree = ET.parse(f'copy_{xml_file}', parser)
new_elem = ET.Element("type")
new_elem.tail ="n    "
root[0].insert(0, new_elem)
root.write("test.xml", pretty_print=True)

output:

<firstTeg>327</firstTeg>
<secondTeg>1.0</secondTeg>
<type/>
Answered By: Fedor March

Add

ET.indent(tree, '  ')

line before

root.write("test.xml", pretty_print=True)

Note: Feature available from Python 3.9

Answered By: Parolla
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.