我一直在使用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。
答案 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