Pretty print in lxml is failing when I add tags to a parsed tree Pretty print in lxml is failing when I add tags to a parsed tree python python

Pretty print in lxml is failing when I add tags to a parsed tree


It has to do with how lxml treats whitespace -- see the lxml FAQ for details.

To fix this, change the loading part of the file to the following:

parser = etree.XMLParser(remove_blank_text=True)root = etree.parse('file.xml', parser).getroot()

I didn't test it, but it should indent your file just fine with this change.


I was having the same issue when writing to files, for anyone else with this issue:

I created a helper function that pretty_prints after I run my main function.

from lxml import etreedef ppxml(xml):    parser = etree.XMLParser(remove_blank_text=True)    tree = etree.parse(xml, parser)    tree.write(xml, encoding='utf-8', pretty_print=True, xml_declaration=True)

In in my main program file

if __name__ == '__main__':    main()    ppxml(xml)