如何使用Elementtree更新XML中的标记文本

时间:2010-06-10 21:41:39

标签: python xml elementtree

使用elementree,读取标签文本的最简单方法是执行以下操作:

import elementtree.ElementTree as ET
sKeyMap = ET.parse("KeyMaps/KeyMap_Checklist.xml")
host = sKeyMap.findtext("/BrowserInformation/BrowserSetup/host")

现在我想更新同一个文件中的文本,希望不必像以下那样重写它:

host = "4444"
sKeyMap.replacetext("/BrowserInformation/BrowserSetup/host")

有什么想法吗?

提前谢谢 克里斯托弗

2 个答案:

答案 0 :(得分:1)

如果要更新文本文件中<host>元素的值,则应使用find()获取元素的句柄,而不是仅使用findtext()阅读文本。获得元素后,您可以使用element.text轻松获取文本。由于您拥有该元素,因此您可以轻松地重置其值,如下所示:

import elementtree.ElementTree as ET
sKeyMap = ET.parse("KeyMaps/KeyMap_Checklist.xml")
host_element = sKeyMap.find("/BrowserInformation/BrowserSetup/host")
host = host_element.text
print host
# Now reset the the text of the <host> element
host = "4444"
host_element.text = host

答案 1 :(得分:1)

建立在Tendayi的例子上可能会尝试类似的事情:

newXmlContent = ET.tostring(sKeyMap)
fileObject = open("KeyMaps/newKeyMap_Checklist.xml","w") #note I used a different filename for testing!
fileObject.write(newXmlContent)
fileObject.close()