2012-11-20 29 views
1

我有一個名爲sync_list.xml XML文檔的結構是這樣的:追加文件名的ElementTree

root = ET.Element("root") 
synced = ET.SubElement(root, "synced") 
synced.set("name", "Already Synced") 
sfile = ET.SubElement(synced, "sfile") 
sfile.set("name", "Filename") 
sfile.text = "base" 

tree = ET.ElementTree(root) 
tree.write("sync_list.xml") 

讓我結束了:

<root><synced name="Already Synced"><sfile name="Filename">base</sfile></synced></root> 

我就是一個目錄內的多個文件。我希望每次打開文件時將這些文件名稱「附加」爲新的sfile條目。所以我最終會得到這樣的結果:

<root><synced name="Already Synced"><sfile name="Filename">base</sfile><sfile name="Filename">File1.blah</sfile><sfile name="Filename">File2.blah</sfile><sfile name="Filename">File3.blah</sfile></synced></root> 

我該如何做到這一點?非常感謝你的幫助。

回答

0

你幾乎在那裏。你只需要讀迴文件並找到其中的<synced>元素:

from __future__ import unicode_literals 
from xml.etree import cElementTree as etree 

tree = etree.parse('sync_list.xml') 
synced = tree.find('synced') 
for filename in ["file\u00b9", "file2", "file3"]: 
    sfile = etree.SubElement(synced, "sfile", name="Filename") 
    sfile.text = filename 

tree.write('sync_list_appended.xml', encoding='utf-8', xml_declaration=True) 
+0

哇!完善。你搖滾,男人! – sosukeinu