2

我想使用 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 节点。我想过把文件变成一个列表然后把文档变成一个新的列表,但是我不知道该怎么做,我认为它可能效率低下。

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

4

1 回答 1

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'))
于 2012-08-24T17:37:07.077 回答