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

如何在lxml中修改XML文件object节点下name标签的文本值

问题原因

你当前代码的错误在于直接修改了<object>节点本身的文本属性,并没有定位到<object>下嵌套的<name>子节点,所以新文本会被插入到<object>标签起始位置和它的第一个子标签之间,原有<name>标签的内容完全没有被改动。

修正后的代码

def _rename_objects(tree, path, new_name="new_name"):
    root = tree.getroot()
    # 遍历所有object节点
    for obj in root.iter('object'):
        # 查找当前object节点下的name子节点
        name_node = obj.find('name')
        # 确认name节点存在再修改,避免无name节点的情况报错
        if name_node is not None:
            name_node.text = str(new_name)
    # 写入时指定编码避免乱码
    tree.write(path, encoding='utf-8', xml_declaration=True)

调试小技巧

如果需要打印XML节点内容排查问题,可以用tostring方法把节点转成可读字符串:

# 标准xml.etree库写法
import xml.etree.ElementTree as ET
print(ET.tostring(obj, encoding='unicode'))

# lxml库写法
from lxml import etree
print(etree.tostring(obj, encoding='unicode', pretty_print=True))

内容的提问来源于stack exchange,提问作者Jürgen K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 16:45:10