В следующей функции я хочу отображать элементы встроенного словаря в виде дерева XML и печатать его в файле.Python print to file as XML
def printToFile(self):
from lxml import etree as ET
for k,v in self.wordCount.items():
root = ET.Element(k)
tree = ET.ElementTree(root)
for k1,v1 in v.items():
DocID = ET.SubElement(root, 'DocID')
DocID.text = str(k1)
Occurences = ET.SubElement(root, 'Occurences')
Occurences.text = str(v1)
print ET.tostring(root, pretty_print=True, xml_declaration=False)
tree.write('output.xml', pretty_print=True, xml_declaration=False)
Когда я запускаю код, все элементы отображаются на экране консоли, но проблема в том, что он печатает только последний элемент в файле.
В консоли, я получил это:
<weather>
<DocID>1</DocID>
<Occurences>1</Occurences>
</weather>
<london>
<DocID>1</DocID>
<Occurences>1</Occurences>
<DocID>2</DocID>
<Occurences>2</Occurences>
<DocID>3</DocID>
<Occurences>1</Occurences>
</london>
<expens>
<DocID>2</DocID>
<Occurences>1</Occurences>
</expens>
<nice>
<DocID>3</DocID>
<Occurences>1</Occurences>
</nice>
, но когда я открываю файл, я получил только это:
<nice>
<DocID>3</DocID>
<Occurences>1</Occurences>
</nice>
Может кто-то помочь мне решить эту проблему. Благодаря
Вы воссоздание дерева каждый раз, когда вы цикл. –
@MorganThrapp это не сработало – Nasser
Вы переписываете файл output.xml каждый раз, когда вы зацикливаете цикл for. вместо этого вы должны добавить файл http://stackoverflow.com/questions/4706499/how-do-you-append-to-a-file-in-python – Woodsy