添加到python中的XML文件

时间:2012-08-24 17:19:30

标签: python xml

我想使用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节点。我考虑过将文件转换为列表然后将文档转换为新列表,但我不知道如何做到这一点,我认为它可能效率低下。

无论如何,任何帮助表示赞赏

1 个答案:

答案 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'))