我想使用python添加到XML文件的末尾。
文件结构如下:
<?xml version="1.0" ?>
<dic>
<word-data>
...
</word-data>
</dic>
我想添加另一个元素,以便文件看起来像这样:
<?xml version="1.0" ?>
<dic>
<word-data>
...
</word-data>
<word-data>
...
</word-data>
</dic>
现在为编程部分!
我目前正在做的是使用此函数将列表“编码”到xml中:
def make_xml(List):
doc = Document();
main = doc.createElement('dic')
doc.appendChild(main)
for l in List:
parent = doc.createElement('word-data')
main.appendChild(parent)
for i in l:
node = doc.createElement(i[0])
node.appendChild(doc.createTextNode(str(i[1])))
parent.appendChild(node)
return doc
其中一个列表如下:
List = [[['parent', 'node'],['parent', 'node'],['parent', 'node']]]
现在我的问题是如何将其添加到现有XML文件中的doc节点。我考虑过将文件转换为列表然后将文档转换为新列表,但我不知道如何做到这一点,我认为它可能效率低下。
无论如何,任何帮助表示赞赏
答案 0 :(得分:3)
如果您想要做的是附加到xml文件,请使用Python的xml模块之一,例如内置xml.minidom
http://docs.python.org/library/xml.dom.minidom.html
我对您的示例代码和嵌套列表结构中的各种循环感到有些困惑,但基于您所采用的输出示例,我认为您想要的是:
from xml.dom.minidom import parse
def make_xml(filename, elements):
dom = parse(filename)
top_element = dom.documentElement
for elmnt in elements:
parent = doc.createElement('word-data')
top_element.appendChild(parent)
parent.appendChild(doc.createTextNode(elmnt))
return dom
new_dom = add_to_xml_file('old_file.xml', ['foo','bar','baz'])
# save file
new_dom.writexml(open('new-bigger-file.xml','w'))