如何使用python查找元素并替换xml文件中元素的同名值?

时间:2018-06-14 08:11:50

标签: python xml replace find

我试图找到元素的所有价值" 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'

有没有人可以给我一个达到要求的例子?非常感谢。

1 个答案:

答案 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

相关问题