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

如何用xml.etree.ElementTree将双标签MyBro转换为单标签?

用xml.etree.ElementTree将双标签
return (<MyBro>Steve</MyBro>)
转为自闭合标签
return (<MyBro Name="Steve" />)

核心思路是把元素的文本内容转移到属性中,再清空元素文本,让ElementTree自动输出自闭合标签,具体步骤和代码如下:

示例代码

import xml.etree.ElementTree as ET

# 可以替换成从文件读取:tree = ET.parse('your_file.xml'); root = tree.getroot()
xml_content = '''<Root>
    <MyBro>Steve</MyBro>
    <MyBro>John</MyBro>
</Root>'''

# 解析XML
root = ET.fromstring(xml_content)

# 批量处理所有MyBro元素
for my_bro in root.findall('MyBro'):
    # 提取并清理文本(避免多余空格/换行)
    text_content = my_bro.text.strip() if my_bro.text else ''
    if text_content:
        my_bro.set('Name', text_content)
        # 清空文本,这是生成自闭合标签的关键
        my_bro.text = None

# 格式化输出(Python 3.9及以上支持ET.indent)
ET.indent(root)
# 打印转换后的XML
print(ET.tostring(root, encoding='unicode'))

# 如果要保存到文件,解析修改后执行:
# tree.write('output.xml', encoding='utf-8', xml_declaration=True)

关键说明

  • 必须清空元素的text属性:只要元素保留文本内容,ElementTree就会输出双标签结构,哪怕已经添加了属性
  • 若原XML里的MyBro标签有子节点,这种方法不适用(仅针对纯文本内容的双标签场景)

内容的提问来源于stack exchange,提问作者don't blink

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:13:13