小编典典

具有lxml的Python漂亮XML打印机

python

在使用“难看的” XML读取现有文件并进行一些修改后,漂亮的打印不起作用。我试过了etree.write(FILE_NAME, pretty_print=True)

我有以下XML:

<testsuites tests="14" failures="0" disabled="0" errors="0" time="0.306" name="AllTests">
    <testsuite name="AIR" tests="14" failures="0" disabled="0" errors="0" time="0.306">
....

我这样使用它:

tree = etree.parse('original.xml')
root = tree.getroot()

...    
# modifications
...

with open(FILE_NAME, "w") as f:
    tree.write(f, pretty_print=True)

阅读 193

收藏
2020-12-20

共1个答案

小编典典

对我来说,这个问题直到我在这里注意到这个小窍门才得以解决:

http://lxml.de/FAQ.html#why-doesn-t-the-pretty-print-option-reformat-my-xml-
output

简洁版本:

使用以下命令读入文件:

>>> parser = etree.XMLParser(remove_blank_text=True)
>>> tree = etree.parse(filename, parser)

这将“重置”现有的缩进,从而允许输出正确生成其自身的缩进。然后照常执行pretty_print:

>>> tree.write(<output_file_name>, pretty_print=True)
2020-12-20