如何从xml.etree.ElementTree的Element对象中移除XML属性?
移除xml.etree.ElementTree中XML元素的属性
你说得没错,Element.remove()方法确实只能用来删除子元素,没法直接处理属性。要移除元素的属性其实很简单——直接操作元素的attrib字典就行,它本质就是存储所有属性的Python字典。
具体实现方法
有两种常用的安全操作方式:
- 用
del关键字直接删除attrib字典里的对应键:import xml.etree.ElementTree as ET # 创建示例person元素 person = ET.Element("person", age="30", name="Alice") print("移除前的属性:", person.attrib) # 输出: {'age': '30', 'name': 'Alice'} # 移除age属性 del person.attrib["age"] print("移除后的属性:", person.attrib) # 输出: {'name': 'Alice'} - 如果不确定目标属性是否存在,怕触发
KeyError,可以用字典的pop()方法,还能指定默认值避免报错:# 安全移除age属性,属性不存在时返回None(也可以自定义默认值) person.attrib.pop("age", None)
原理说明
在xml.etree.ElementTree里,每个元素的属性都存在attrib这个有序字典(Python 3.7及以上版本为有序)中,所以所有字典的常规操作都适用于它。除了删除属性,你也可以通过attrib["key"] = value修改属性值,或者用get()方法安全读取属性,就像你之前尝试的那样。
内容的提问来源于stack exchange,提问作者Stevoisiak
相关产品推荐
相关产品推荐

