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

Python如何使用ElementTree向现有XML文件追加新的<item>节点

Python ElementTree 新增XML <item>节点实现方案

直接使用Python标准库内置的xml.etree.ElementTree即可完成需求,无需安装第三方依赖,以下是可直接运行的实现代码:


Python 3.9+ 版本代码(支持自动格式化缩进,输出格式完全匹配需求)

import xml.etree.ElementTree as ET

# 1. 读取原有XML文件
tree = ET.parse('你本地的XML文件路径.xml')
root = tree.getroot()

# 2. 构建新的item节点及子节点
new_item = ET.Element('item')
# 添加title子节点
title_elem = ET.SubElement(new_item, 'title')
title_elem.text = 'Ticket number 02'
# 添加link子节点
link_elem = ET.SubElement(new_item, 'link')
link_elem.text = 'https://blabl12abla.com/01'
# 添加pubDate子节点
pubdate_elem = ET.SubElement(new_item, 'pubDate')
pubdate_elem.text = 'Wed, 16 Jul 2021 21:13:00 GMT'

# 3. 将新item节点追加到channel根节点末尾
root.append(new_item)

# 4. 自动格式化缩进(Python3.9及以上版本内置方法)
ET.indent(root, space="    ")

# 5. 保存修改后的XML文件
tree.write('修改后的输出文件路径.xml', encoding='utf-8', xml_declaration=True)

Python 3.9以下版本适配方案

低版本Python没有内置ET.indent方法,添加以下自定义缩进函数替换即可:

# 自定义缩进工具函数
def format_indent(elem, level=0):
    i = "\n" + level*"    "
    if len(elem):
        if not elem.text or not elem.text.strip():
            elem.text = i + "    "
        if not elem.tail or not elem.tail.strip():
            elem.tail = i
        for sub_elem in elem:
            format_indent(sub_elem, level+1)
        if not sub_elem.tail or not sub_elem.tail.strip():
            sub_elem.tail = i
    else:
        if level and (not elem.tail or not elem.tail.strip()):
            elem.tail = i

# 调用自定义缩进函数替换内置ET.indent即可
format_indent(root)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 13:15:02