在Python的ElementTree中刷新文件

时间:2016-12-01 00:27:25

标签: python xml python-3.x elementtree

我一直在使用python的xml.etree.ElementTree库,主要是玩弄它。然而,我注意到python似乎将文件加载到内存中并在那里编辑它,然后刷新它,并继续使用未编辑的版本。 例如,如果我的程序将一个元素添加到XML文件,然后遍历该XML文件,它将看不到它之前添加的内容。

以下是我的代码的精简版本:

用于添加到文件中:

import xml.etree.ElementTree as ET
tree = et.parse("file.xml")
root = tree.getroot()
newel = ET.Element("element", tag=foo, )
newel.text = bar
root.append(newel)
tree.write("file.xml")
for child in root:
        if child.get("tag") == foo:
            print(child.text)

我做错了什么,或者说'刷新'的好方法,可以说是程序中的XML文件,所以当我用for循环遍历程序时,我可以看到我的新元素?

我正在使用python 3.5。

1 个答案:

答案 0 :(得分:0)

这与刷新或冲洗无关。 Element构造函数的签名是:

    __init__(self, tag, attrib={}, **extra)

除了将tag隐式指定为"element"之外,您还将tag作为命名参数传递。假设您希望Element.get成为元素属性(基于您尝试使用foo = "foo" bar = "bar" import xml.etree.ElementTree as ET tree = ET.parse("file.xml") root = tree.getroot() newel = ET.Element("element", {"tag": foo}) newel.text = bar root.append(newel) tree.write("file.xml") for child in root: if child.get("tag") == foo: print(child.text) 检索它的方式),以下内容应该有效(进行一些额外的更正):

vector<int>::const_iterator