ElementTree.write在第二遍时没有pretty_print

时间:2011-06-10 20:24:48

标签: python lxml elementtree

我在写入xml文件时遇到格式化xml的问题。问题是,第一次写入xml文件时,使用pretty_print = True正确格式化了xml。任何后续尝试附加到xml文件的格式都不正确。 xml是写的,但没有格式化。我的代码如下:

#does the library.xml file exist?
if os.path.isfile(libraryFile):
    library = ET.ElementTree()
    library.parse(libraryFile)
else:
    #the library.xml does not exist at the given path
    library = ET.ElementTree(project.getBoilerplateLibrary(path)) 

root = library.getroot()

root.append(xml) #xml is a lxml Element object

f = open(libraryFile, 'w')
library.write(f, pretty_print=True)
f.close()

我们第一次写文件时得到的结果是:

<root>
    <element>
        <foo>bar</foo>
    </element>
</root>

任何后续尝试附加到此文件的行为最终都会显示为:

<root>
    <element>
        <foo>bar</foo>
    </element><element><bleep>bloop</bleep></element></root>

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

常见问题解答涵盖了这个答案:Why doesn't the pretty print options reformat my XML output

此问题也曾在StackOverflow上以lxml pretty print write file problem提出。

遗憾的是使用XML的副作用,其中空格(不幸的是)绝对重要。