如何用Python ElementTree移除XML中的description元素?
解决XML移除
description元素的错误 问题根源
触发TypeError: remove() argument must be xml.etree.ElementTree.Element, not str的原因有三点:
- 代码错误获取了
rank元素的文本内容(字符串类型),而非目标description元素对象 remove()方法仅接受Element类型参数,不能传入字符串- 你试图从
root节点移除元素,但description的父节点是country,必须从对应country节点中执行移除操作
正确实现代码
for country in root.findall('country'): # 获取当前country节点下的description元素对象 description_elem = country.find('description') if description_elem is not None: # 从父节点country中移除该元素 country.remove(description_elem) tree.write('SampleData.xml')
代码说明
- 用
root.findall('country')遍历所有国家节点,避免遍历过程中修改XML树结构引发的异常 - 对每个
country节点,调用find('description')获取对应的元素对象(而非文本内容) - 增加非空判断,避免部分
country节点无description时触发报错 - 调用父节点
country的remove()方法完成元素删除,最后将修改后的XML写入文件
内容的提问来源于stack exchange,提问作者joemamah24
相关产品推荐
相关产品推荐

