您可以使用xml.etree提供的有限XPath支持:>>> from xml.etree import ElementTree
>>> xml_data = """
...
...
...
...
... """.strip()
>>> tree = ElementTree.fromstring(xml_data)
>>> d2 = tree.find('element_content[@attribute="device_2"]')
>>> d2.set('type', 'new_type')
>>> print(ElementTree.tostring(tree).decode('utf-8'))
这里最重要的部分是一个XPath表达式,其中我们通过元素的名称和属性值来查找元素:
^{pr2}$
更新:因为所讨论的XML数据是事先不知道的。
您可以像这样查询第一个、第二个、…、最后一个元素(索引从1开始):
^{3}$
但是,由于您无论如何都要迭代元素,所以最简单的解决方案是只检查当前元素的属性:for element in root.iter(section):
if element.attrib.get('type') == 'parameter_2'):
element.set(attribute, attribute_value)