ElementTree.write не печатает на втором проходе - PullRequest
3 голосов
/ 11 июня 2011

У меня проблема с форматированием XML при записи в файл XML.Проблема заключается в том, что когда я впервые пишу в xml-файл, xml должным образом отформатирован с использованием pretty_print = True.Любые последующие попытки добавить файл 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 Ответ

1 голос
/ 11 июня 2011

Часто задаваемые вопросы охватывают этот ответ: Почему красивые параметры печати не переформатируют мой вывод XML

Этот вопрос также задавался ранее на StackOverflow как lxml проблема печати и печати файла .

Это, к сожалению, побочный эффект использования XML, когда пробел (к сожалению) определенно имеет значение.

...