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

如何用Python的xml.etree.ElementTree删除深层XML指定标签并保存

使用xml.etree.ElementTree删除XML中所有text2元素的简便方法

直接用ElementTree的查找和删除API就能快速搞定,步骤清晰:

完整代码示例

import xml.etree.ElementTree as ET
import io

# 原始XML内容(已修正标签闭合错误)
xml_content = """<?xml version='1.0' encoding='UTF-8'?>
<results preview='0'>
<meta>
<fieldOrder>
<field>count</field>
</fieldOrder>
</meta>
    <result offset='0'>
        <field k='count'>
            <value>
                <text1>6</text1>
                <text2>7</text2>
                <text3>8</text3>
           </value>
        </field>
    </result>
</results>
"""

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

# 全局查找所有text2元素(XPath语法适配任意层级)
text2_elements = root.findall(".//text2")

# 通过父节点删除每个text2元素(避免迭代过程中修改结构导致的问题)
for elem in text2_elements:
    elem.parent.remove(elem)

# 将修改后的XML转为带声明的字符串
tree = ET.ElementTree(root)
output_buffer = io.BytesIO()
tree.write(output_buffer, encoding='UTF-8', xml_declaration=True)
final_xml = output_buffer.getvalue().decode('UTF-8')

# 输出或保存结果
print(final_xml)

关键说明

  • 用.//text2 XPath表达式可以定位所有层级下的text2元素,无需关心它的父节点路径
  • 必须通过父节点调用remove()方法删除子元素,直接操作子元素会触发报错
  • 指定xml_declaration=True可以保留XML声明头,避免输出缺失<?xml...?>
  • 如果处理本地XML文件,把ET.fromstring(xml_content)替换为ET.parse("your_file.xml").getroot()即可

运行代码后,输出的XML就是你需要的目标格式,所有<text2>元素都会被移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:45:32