我试图找到元素的所有价值" name"这不是"无"并用新的价值替换它们"安德森"。所以我希望这两个" Tom," John"和玛丽"将被"安德森"取代,但名称"无"号码7777不会被改变。
<aaa>
<bbb>
<name>Tom</name><number>1111</number>
<name>Tom</name><number>2222</number>
<name>John</name><number>3333</number>
</bbb>
<ccc>
<name>None</name><number>7777</number>
<name>Mary</name><number>8888</number>
</ccc>
</aaa>
我只知道如何使用&#34; tree.find()&#34;替换特定元素的一个值,但我不知道如何查找和替换所有元素。
例如:
a = tree.find('aaa/bbb/name')
tree.find('aaa/bbb/name').text = 'Anderson'
有没有人可以给我一个达到要求的例子?非常感谢。
答案 0 :(得分:1)
以下XPath表达式可以检索您要求的节点.//name[text()!='None']
虽然ElementTree的XPath支持非常有限,但我不确定它是否支持text()函数。
另一种选择是:
for name in tree.findall(".//name"):
if name.text == 'None': continue
# Do stuff here
name.text = "Anderson"
https://docs.python.org/3.5/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.findall