You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python xml.etree移除name标签报TypeError参数类型错误

报错原因定位
  • 传参类型错误:Element.remove() 方法要求传入的参数必须是 xml.etree.ElementTree.Element 类型的节点对象,原代码传入的是 item.tag——这是存储标签名的字符串值,直接触发TypeError。
  • 逻辑存在偏差:原代码遍历row节点下所有子元素就执行删除,没有做标签名判断,就算修正传参类型,也会把row下的index、price、desc等所有子节点全部删掉,达不到仅删除<name>标签的需求。
正确实现方案

实现逻辑:精准定位所有<row>节点,找到每个row下标签名为name的子节点对象,执行删除操作后写出文件即可,全程仅使用Python标准库,无需额外安装依赖。

import xml.etree.ElementTree as ET

# 加载解析XML文件
tree = ET.parse('/content/sample_data/xyz.xml')
root = tree.getroot()

# 遍历所有row层级节点
for row_node in root.findall('row'):
    # 查找当前row下的name标签节点
    name_ele = row_node.find('name')
    # 节点存在时执行删除,避免无对应标签时报错
    if name_ele is not None:
        row_node.remove(name_ele)

# 写出处理完成的XML,指定编码避免乱码
tree.write('/content/sample_data/abc.xml', encoding='utf-8', xml_declaration=True)

补充说明:如果实际业务场景中<name>标签可能出现在XML任意嵌套层级,而非固定为<row>的直接子节点,可以写递归函数遍历全树匹配删除。针对当前提供的样例XML结构,上述代码可以完全满足删除需求,处理后其余标签结构、文本内容都将保持原样。

内容的提问来源于stack exchange,提问作者kiric8494

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 10:01:08